我正在尝试为我的服务器编译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
任何帮助都将不胜感激。
答案 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 /,它就会出现相同的错误。请参阅答案的顶部以找到我的解决方案。