Debian 在预期的情况下不会重新运行
我正在将我的一些包从debhelper包转换为使用dh,这时我注意到它不支持重新运行目标 例如:Debian 在预期的情况下不会重新运行,debian,packaging,deb,debhelper,Debian,Packaging,Deb,Debhelper,我正在将我的一些包从debhelper包转换为使用dh,这时我注意到它不支持重新运行目标 例如: 我运行debian/rules build来检查构建 做一个小的代码更改 再次运行debian/rules build,它什么也不做 或者另一个常见的例子: 我运行fakeroot debian/rules binary检查包中是否正确安装了所有内容 发现遗漏的东西;纠正这个问题 运行fakerootdebian/rules binary来测试更改,但它什么也不做 这是我以前使用的CDB在行为上的一
debian/rules build
来检查构建debian/rules build
,它什么也不做debian/rules clean
debian/规则:
#!/usr/bin/make -f
export DEB_CXXFLAGS_MAINT_APPEND+=-std=gnu++0x
%:
dh $@
是的,这是
dh
(它必须跟踪已经采取的步骤,因为它通常会在整个包构建过程中被多次调用,并且它不能利用make
的内部来保持状态。这是一种可怕的黑客行为,但考虑到可怕的问题限制,这是一个不错的解决方案)
公平地说,当已经有一个部分构建时,debian/rules build
应该做什么还没有被很好地定义。如果一个构建之前已经成功,并且没有任何状态被清除,那么Debhelper将该构建视为已完成并不是不合理的
当您想要开始重新构建时,只需使用dh_clean
就可以解决您的问题。这不会调用dh_auto_clean
,因此,如果您的代码在debian/
目录之外构建,则不会触及它,但会清除Debhelper状态
相反,如果您希望能够“倒带”部分构建,使其认为构建尚未完成,那么您可以尝试使用执行以下操作的脚本
!/bin/bash
sed-i-e'/dh_auto_build/,$d'debian/*.debhelper.log
这将从任何*.debhelper.log构建状态中删除“
dh_auto_build
”项及其后的所有内容,这样dh
将认为它们尚未完成。到那时为止所采取的任何步骤都将被视为已完成。这是不幸的,但似乎是真的。