debian打包:dh build和dh二进制文件有什么区别?

我在构builddebian包时遇到了一个问题。

至于规则文件的文件: https : //www.debian.org/doc/manuals/maint-guide/dreq.en.html#rules

但是当我运行dh binary --no-act命令时,输出包括dh build --no-act 。 这意味着./configuremake命令在构builddebian包期间运行两次。 有点奇怪。

我用dpkg-buildpackage -us -uc来构builddebian包。

更新:我看到它实际上没有运行两次,但为什么 – 无行动显示dh build输出运行两次?

首先,为了回答第一个问题, Debian政策§4.9概述了debian/rules buildbinary规则之间的区别 。 简而言之, build目标应该只执行“构建”步骤,不要做任何需要root(或fakeroot)权限的任何事情,例如将文件chowning到uid或“安装”事物。 binary ,另一方面,应该采取所有必要的步骤来建立适当的二进制代码。 binary应该包括所有的build步骤,如果他们还没有完成。

这里有一些关于你可能会错过的事实:

  1. dh跟踪作为构建序列(例如,作为dh builddh binary )运行的dh_*命令,即使在调用之间也是如此。 您可以通过查看debian/$package.debhelper.log的内容来查看它认为已经运行的命令。 如果在那里列出了一个命令,那么dh会认为它已经运行,用于命令排序的目的。

  2. dh $sequence --no-actdebian/$package.debhelper.log文件考虑在内。 所以当你在一个新的干净的构建目录下运行dh binary --no-act时,你会看到一长串的命令,包括那些需要为build目标完成的命令。 但是如果你真的先运行 dh build然后再尝试dh binary --no-act ,那么就不会再显示构建步骤。 它只会显示准备和创建实际的.deb包的步骤。