gpt4 book ai didi

linux - debian 包装 : what's the difference between dh build and dh binary

转载 作者:太空狗 更新时间:2023-10-29 11:08:10 25 4
gpt4 key购买 nike

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

我使用 dpkg-buildpackage -us -uc 来构建 debian 包。

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

最佳答案

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

以下是您可能遗漏的关于 dh 的几个事实:

  1. dh 跟踪作为构建序列的一部分运行的 dh_* 命令(例如,作为 dh build< 的一部分dh binary),甚至在两次调用之间。通过查看 debian/$package.debhelper.log 的内容,您可以看到它认为已经运行了哪些命令。如果其中列出了一个命令,dh 将认为它已经运行以进行命令排序。

  2. 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com