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
是如何确定这个序列的,以及它在哪里记录。
将要执行的辅助工具的顺序取决于以下几点:
- 正在传递什么构建目标。其中包括:
build-arch
、build-indep
、build
、clean
、install-indep
、install-arch
、install
、binary-arch
、binary-indep
和 binary
。 Debian Policy §4.9. 中讨论了(大部分)这些的含义
- Debhelper 兼容级别(在
debian/compat
文件中找到)
- 您的 Debhelper 版本(尽管已努力使不同版本在给定相同兼容级别的情况下工作相同)
- 自上次清理以来已经有哪些辅助命令运行(在 debhelper 兼容级别 9 和更低级别)
- 正在使用哪些插件(
--with
和 --without
选项)
- 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
我试图更好地了解 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 Policy §4.9. 中讨论了(大部分)这些的含义
- Debhelper 兼容级别(在
debian/compat
文件中找到) - 您的 Debhelper 版本(尽管已努力使不同版本在给定相同兼容级别的情况下工作相同)
- 自上次清理以来已经有哪些辅助命令运行(在 debhelper 兼容级别 9 和更低级别)
- 正在使用哪些插件(
--with
和--without
选项) - 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