我正在尝试为我的服务器编译一个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
您应该跳过运行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}
一个正确的Debian包不允许在那里生成东西,而是空目录。这就是为什么它抱怨它不能删除目录。它不期望文件在那里。您唯一可以拥有的是/usr/local中的一个目录,这就是dh_usrlocal尝试处理的内容但是你不应该有文件
用户只把文件放在/usr/local/。
我也认为如果你在你的目录路径中有usr/local名称,它也会导致错误,即使它不是正确的usr/local。还有一个可能导致这个问题的例子。我认为构建软件中的正则表达式查找usr/local。
/var/tmp/usr/local/
我知道这是一个老帖子,但它在谷歌上排名第一,所以需要一个好的答案,这样人们就能迅速解决这个问题。
重要:此错误仅在您尝试安装到/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/,它就会出现同样的错误。