我在构建 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 输出运行两次?

    最佳答案

    首先,为了回答第一个问题,Debian Policy §4.9 中概述了 debian/rules buildbinary 规则之间的区别。简而言之,build 目标应该只执行“构建”步骤,而不是执行任何需要 root(或 fakeroot)权限的事情,例如将文件 chown 到 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/

    10-11 23:17