我試圖構建一個包含/etc
下的一些文件的包,這些文件不是配置。即使我在debian
目錄中創建了一個空的package.conffiles
,它們也會自動包含在conffiles
中。如何停止dh_installdeb
這樣做?防止conffiles創建
回答
最初,這個答案建議您提供自己的debian/conffiles
文件,只列出要安裝的實際配置文件。顯然,只用於添加更多配置文件,但不會覆蓋整個conffiles
文件。
但是,我不明白你爲什麼要這麼做。如果這些文件不是配置文件,那麼用戶將不會編輯它們,因此沒有任何自動Confeile處理會在升級時遇到問題。另外,如果它們實際上不是配置文件,我強烈建議將它們安裝到/ etc之外的地方,以避免出現問題。
我不知道我的理解RAFL的答案,但作爲dh_installdeb
的debhelper=9.20120115ubuntu3
增加了以下/etc
一切,那些默認配置幾乎無條件地:debian/conffiles
增加了那些默認配置文件,但不覆蓋它們。
可以在debian/rules
中手動覆蓋。例如,爲了防止被註冊爲那些默認配置任何文件:
override_dh_installdeb:
dh_installdeb
find ${CURDIR}/debian/*/DEBIAN -name conffiles -delete
(當然,壓痕必須硬標籤)
從'dh_installdeb'的當前來源判斷,你是對的。拉夫的答案將無法正常工作。 – Dave 2014-06-24 01:48:12
有可能在PREINST腳本debian/<package-name>.preinst
定義升級規則使用dpkg-maintscript-helper。
#!/bin/sh
# preinst script for <package-name>
set -e
case "$1" in
install|upgrade)
if dpkg-maintscript-helper supports rm_conffile 2>/dev/null; then
dpkg-maintscript-helper rm_conffile /etc/foo/conf.d/bar <Previous package version> -- "[email protected]"
fi
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0
更多信息: The right way to remove an obsolete conffile in a Debian package
這裏是我想出了爲瓦西里的答案的延伸。它可以有效地完成dh_installdeb的功能,但不會自動添加/etc
文件。通過這種方式,您可以再次完全控制哪些文件被視爲conffiles,哪些不是。
override_dh_installdeb:
dh_installdeb
@echo "Recreating conffiles without auto-adding /etc files"
@for dir in ${CURDIR}/debian/*/DEBIAN; do \
PKG=$$(basename $$(dirname $$dir)); \
FILES=""; \
if [ -f ${CURDIR}/debian/conffiles ]; then \
FILES="${CURDIR}/debian/conffiles"; \
fi; \
if [ -f ${CURDIR}/debian/$${PKG}.conffiles ]; then \
FILES="$$FILES ${CURDIR}/debian/$${PKG}.conffiles"; \
fi; \
if [ -n "$$FILES" ]; then \
cat $$FILES | sort -u > $$dir/conffiles; \
elif [ -f $$dir/conffiles ]; then \
rm $$dir/conffiles; \
fi; \
done
(當然,如果粘貼到您的規則文件中,請使用REAL選項卡)。
此答案使用BASH(或/ bin/sh,它可以符號鏈接到BASH或是它的變體)。可能有一種方法可以通過僅使用makefile內部命令來實現這一點,但我對這些並不擅長。
即使從同一來源構建多個二進制包時,它也應該可以工作,並且它遵循普通的debian/conffiles
以及特定包debian/${pkg}.conffiles
。
- 1. 防止JDOM2創建xmlns =「」
- 2. 防止SpringBoot創建EmbeddedServletContainer
- 3. 防止超鏈接自動創建
- 4. 如何防止Div創建新行
- 5. 如何防止GitLab中的組創建
- 6. create db - 防止創建用戶
- 7. 防止在python中創建文件
- 8. EF6防止不創建外鍵索引
- 9. C#防止創建其他表格
- 10. 防止sed創建臨時文件
- 11. 防止單元格被創建
- 12. 防止在gitlab中創建項目?
- 13. 如何防止創建空文件
- 14. 防止創建MessageBox的過程
- 15. 如何防止Grails 3創建會話?
- 16. 防止從創建文件夾生產
- 17. Sublime Text 2 - 防止創建._文件
- 18. wget - 防止創建空目錄
- 19. 防止Java創建新進程
- 20. 的LINQ to SQL:防止重複創建
- 21. Quickblox:防止用戶創建帳戶
- 22. 防止numpy創建多維數組
- 23. 創建觸發器防止插入
- 24. .deb包conffiles問題
- 25. 防止對話建立
- 26. 防止eclipse構建項目?
- 27. Visual Studio構建配置 - 防止重建
- 28. 防止在Javascript中自動創建全局變量
- 29. C#CodeFunction2 - 你如何防止創建'返回'?
- 30. 防止在我的Web項目中創建.DS_Store
他們是配置文件,但他們由外部服務(如puppet)管理,我不想升級創建無用的.dpkg_new(或任何他們被稱爲)文件。 – viraptor 2010-09-19 00:28:10