debhelper 的默认顺序

Default sequence of debhelper

我试图更好地了解 debhelper 的 dh 工具。据我了解,dh 是各种 dh_* 辅助工具的前端。这些辅助工具既可以独立调用,也可以从 dh 工具自动调用。通常会创建一个 debian/rules 文件,它以某种方式调用 dh 并可能覆盖某些 dh_* 调用。 dh 然后似乎知道它需要调用哪个 dh_* 工具以及调用的顺序。

/usr/share/doc/debhelper/examples/rules.tiny 下的示例包含以下内容作为 debian/rules 文件的示例:

#!/usr/bin/make -f
%:
    dh $@

作为此规则文件的结果,dh 执行的 dh_* 辅助工具的顺序是什么?更重要的是,dh 是如何确定这个序列的,以及它在哪里记录。

将要执行的辅助工具的顺序取决于以下几点:

  1. 正在传递什么构建目标。其中包括:build-archbuild-indepbuildcleaninstall-indepinstall-archinstallbinary-archbinary-indepbinaryDebian Policy §4.9.
  2. 中讨论了(大部分)这些的含义
  3. Debhelper 兼容级别(在 debian/compat 文件中找到)
  4. 您的 Debhelper 版本(尽管已努力使不同版本在给定相同兼容级别的情况下工作相同)
  5. 自上次清理以来已经有哪些辅助命令运行(在 debhelper 兼容级别 9 和更低级别)
  6. 正在使用哪些插件(--with--without 选项)
  7. makefile 中存在哪些覆盖目标(例如 override_dh_auto_test

如您所见,对于所有可能的构建目标和配置安排(甚至只是最常见的),记录哪些命令是 运行、顺序是什么可能会造成混淆。因此,知道的方法是使用 dh--no-act 参数,并根据需要设置构建目录。

这是一个示例 运行,目标 binary 在我刚刚使用 dh_make 制作的虚拟构建目录中,放入兼容级别 10。确切的命令或您将看到的确切顺序可能会略有不同:

~/dh-demo$ dh binary --no-act
    dh_testdir
    dh_update_autotools_config
    dh_autoreconf
    dh_auto_configure
    dh_auto_build
    dh_auto_test
    dh_testroot
    dh_prep
    dh_installdirs
    dh_auto_install
    dh_install
    dh_installdocs
    dh_installchangelogs
    dh_installexamples
    dh_installman
    dh_installcatalogs
    dh_installcron
    dh_installdebconf
    dh_installemacsen
    dh_installifupdown
    dh_installinfo
    dh_systemd_enable
    dh_installinit
    dh_systemd_start
    dh_installmenu
    dh_installmime
    dh_installmodules
    dh_installlogcheck
    dh_installlogrotate
    dh_installpam
    dh_installppp
    dh_installudev
    dh_installgsettings
    dh_bugfiles
    dh_ucf
    dh_lintian
    dh_gconf
    dh_icons
    dh_perl
    dh_usrlocal
    dh_link
    dh_installwm
    dh_installxfonts
    dh_strip_nondeterminism
    dh_compress
    dh_fixperms
    dh_strip
    dh_makeshlibs
    dh_shlibdeps
    dh_installdeb
    dh_gencontrol
    dh_md5sums
    dh_builddeb