为什么dh_usrlocal会抛出构建错误?

时间:2011-09-18 05:24:00

标签: deb build-error

我正在尝试为我的服务器编译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

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:30)

你应该跳过运行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}

答案 1 :(得分:4)

一个正确的Debian软件包不允许在那里生成东西但是空目录。这就是为什么它抱怨它无法删除目录。它不希望文件存在。你唯一可以拥有的是/ usr / local中的目录,这就是dh_usrlocal试图处理的内容  但你不应该有文件

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

另外我认为如果你的目录路径中有usr / local name,它也会导致错误,即使它不是正确的usr / local。可能导致问题的一个例子。我认为构建软件中的正则表达式代表usr / local。

/var/tmp/usr/local/

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

答案 2 :(得分:3)

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

时才会出现此错误

我移动了我的软件包,从/usr/local/lib/python3/dist-packages/安装到/usr/lib/python3/dist-packages,错误消失了。 dh_usrlocal似乎被打破了,或者我的包裹没有遵守预期的规则。


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

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

usr/* usr/

正常工作时的内容:

usr/ usr/

debian包的文件结构:

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

修改 这似乎只有在复制根目录时才有效。一旦我尝试指定复制过usr /,它就会出现相同的错误。请参阅答案的顶部以找到我的解决方案。