我试图更好地了解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
如何确定这个序列,以及在哪里记录
将执行的帮助程序工具的顺序取决于以下几点:
- 这些包括:
build-arch
、build-indep
、build
、clean
、install-indep
、install-arch
、install
、binary-arch
、binary-indep
和binary
。这些(大部分)的含义在 Debian 政策 §4.9 中讨论过。 - Debhelper 兼容级别(如
debian/compat
文件所示) - 您的 Debhelper 版本(尽管在给定相同的兼容级别的情况下,努力使不同的版本工作相同)
- 自上次清理以来已经运行了哪些辅助命令(在 DebHelper 兼容级别 9 及更低版本中)
- 正在使用哪些插件(
--with
和--without
选项) - 生成文件中存在哪些覆盖目标(例如
override_dh_auto_test
)
如您所见,对于所有可能的构建目标和配置安排(甚至只是最常见的),记录运行哪些命令,以什么顺序运行可能会令人困惑。因此,知道的方法是使用--no-act
参数来dh
,并按照您想要的方式设置您的构建目录。
下面是一个示例,在我刚刚使用dh_make
创建的虚拟构建目录中使用binary
目标运行,放入兼容级别 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