我在构建 debian 软件包时遇到了问题。
至于规则文件的文件:https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#rules
debian/rules 构建运行 dh 构建;依次运行以下命令:
dh_testdir dh_auto_configure dh_auto_build dh_auto_test
fakeroot debian/rules 二进制文件运行 fakeroot dh 二进制文件;依次运行以下命令:
dh_testroot dh_prep dh_installdirs dh_auto_install dh_install dh_installdocs ... dh_builddeb
但是当我运行 dh binary --no-act
命令时,输出包括 dh build --no-act
。这意味着 ./configure
和 make
命令在构建 debian 软件包期间运行两次。这很奇怪。
我使用 dpkg-buildpackage -us -uc
来构建 debian 包。
更新:我看到它实际上没有运行两次,但为什么 --no-act 显示 dh build
输出运行了两次?
最佳答案
首先,要回答第一个问题,debian/rules
build
和 binary
规则之间的区别在 Debian Policy §4.9 中列出。 .简而言之,build
目标应该只执行“构建”步骤,而不执行任何需要 root(或 fakeroot)权限的操作,例如将文件更改为 uid 0 或“安装”东西。另一方面,binary
应该采取所有必要的步骤来构建适当的二进制 deb。 binary
应该包括 build
的所有步骤(如果尚未完成的话)。
以下是您可能遗漏的关于 dh
的几个事实:
dh
跟踪作为构建序列的一部分运行的dh_*
命令(例如,作为dh build< 的一部分
或dh binary
),甚至在两次调用之间。通过查看debian/$package.debhelper.log
的内容,您可以看到它认为已经运行了哪些命令。如果其中列出了一个命令,dh
将认为它已经运行以进行命令排序。dh $sequence --no-act
也将debian/$package.debhelper.log
文件考虑在内。因此,当您在全新、干净的构建目录上运行dh binary --no-act
时,您会看到一长串命令,包括那些需要为build< 完成的命令
目标。但是如果你真的运行dh build
先然后试试dh binary --no-act
,它不会'不再显示构建步骤。它只会显示准备和创建实际 .deb 包的步骤。
关于linux - debian 包装 : what's the difference between dh build and dh binary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524630/