为什么dh_usrlocal抛出构建错误



我正在尝试为我的服务器编译一个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/,它就会出现同样的错误。

相关内容

  • 没有找到相关文章

最新更新