28

我正在尝试为我的服务器编译一个 deb 包。当我去构建时,一切看起来都很好,直到dh_usrlocal构建停止并返回错误。问题是我第一次尝试这个,我真的不知道在哪里寻找问题。

这是我的终端的输出,我还在输出底部包含了我运行的命令。

make[2]: Leaving directory `/home/ian/Desktop/scst-2.1.0/src'
make[1]: Leaving directory `/home/ian/Desktop/scst-2.1.0'
   dh_install
   dh_installdocs
   dh_installchangelogs
   dh_installexamples
   dh_installman
   dh_installcatalogs
   dh_installcron
   dh_installdebconf
   dh_installemacsen
   dh_installifupdown
   dh_installinfo
   dh_pysupport
   dh_installinit
   dh_installmenu
   dh_installmime
   dh_installmodules
   dh_installlogcheck
   dh_installlogrotate
   dh_installpam
   dh_installppp
   dh_installudev
   dh_installwm
   dh_installxfonts
   dh_bugfiles
   dh_lintian
   dh_gconf
   dh_icons
   dh_perl
   dh_usrlocal
dh_usrlocal: debian/scst/usr/local/include/scst/scst.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_user.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/Module.symvers is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_debug.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_const.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_sgv.h is not a directory
rmdir: failed to remove `debian/scst/usr/local/include/scst': Directory not empty
dh_usrlocal: rmdir debian/scst/usr/local/include/scst returned exit code 1
make: *** [binary] Error 1
dpkg-buildpackage: error: debian/rules binary gave error exit status 2
ian@vm01:~/Desktop/scst-2.1.0$ sudo dpkg-buildpackage -rfakeroot

任何帮助,将不胜感激。

4

3 回答 3

33

您应该跳过运行 dh_usrlocal。为此,您只需将其添加到 debian/rules 文件中:override_dh_usrlocal:

一般来说,如果您对特定目标有问题,您只需通过在 debian/rules 文件中添加 override_{target} 来覆盖它。
例如,您的 dh_icons 有问题。您只需将其添加到您的 debian/rules 文件中。

override_dh_icons:
    {insert your processing commands or do nothing to skip it when building package}
于 2012-08-21T13:18:17.090 回答
5

一个合适的 Debian 软件包不允许在那里生成东西,而是空目录。这就是它抱怨它不能删除目录的原因。它不希望文件在那里。您唯一可以拥有的是 /usr/local 中的目录,这就是 dh_usrlocal 尝试处理的内容,但您不应该拥有文件

用户只将文件放在 /usr/local/ 中。

另外我认为,如果您的目录路径中有 usr/local 名称,即使它不是正确的 usr/local,也会导致错误。也可能导致问题的示例。我认为构建软件中的正则表达式寻找 usr/local。

/var/tmp/usr/local/

我知道这是一篇旧帖子,但它在谷歌上排名第一,所以需要一个好的答案,以便人们快速解决这个问题。

于 2016-04-08T20:54:38.637 回答
3

重要提示:仅当您尝试安装到/usr/local/

我将我的包移动到安装位置,/usr/local/lib/python3/dist-packages/错误/usr/lib/python3/dist-packages消失了。dh_usrlocal 似乎坏了,或者我的包没有遵守它所期望的规则。


将文件添加到我的 debian 包后,我开始收到错误消息,package.install因此它将包内容复制到文件系统。(我当时正在安装/usr/local/

我的安装文件失败时的内容:

usr/* usr/

正常工作时的内容:

usr/ usr/

debian包的文件结构:

packagename-0.1/
  debian/
  usr/
    local/
      lib/
        python3/
          packagename/

编辑: 这似乎只在复制根目录时有效。一旦我尝试指定复制过去的 usr/,它就会因相同的错误而中断。请参阅答案顶部以找到我的解决方案。

于 2013-09-13T18:14:17.517 回答