4

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

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

  • debian/rules build 运行 dh build;依次运行以下内容:

    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. 这意味着./configuremake命令在构建 debian 包期间运行两次。有点奇怪。

我曾经dpkg-buildpackage -us -uc构建debian包。

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

4

1 回答 1

5

首先,为了回答第一个问题,Debian 政策 §4.9debian/rules build中概述了和binary规则之间的区别。简而言之,目标应该只执行“构建”步骤,而不是执行任何需要 root(或 fakeroot)权限的操作,例如将文件更改为 uid 0 或“安装”东西。另一方面,应该采取所有必要的步骤来构建适当的二进制 deb。应该包括尚未完成的所有步骤。buildbinarybinarybuild

以下是一些关于dh您可能遗漏的事实:

  1. dh跟踪dh_*作为构建序列的一部分运行的命令(例如,作为dh buildor的一部分dh binary),即使在调用之间也是如此。你可以通过查看debian/$package.debhelper.log. 如果其中列出了一个命令,dh则出于命令排序的目的,将认为它已经运行。

  2. dh $sequence --no-act也考虑了该debian/$package.debhelper.log文件。因此,当您dh binary --no-act在新的、干净的构建目录上运行时,您会看到一长串命令,包括需要为build目标执行的命令。但是如果你真的先运行 然后尝试,它就不会再显示构建步骤了。它只会显示准备和创建实际 .deb 包的步骤。dh builddh binary --no-act

于 2015-09-14T19:31:56.377 回答