構成されていないファイルがいくつかあるパッケージをビルドしようとし/etc
ています。conffiles
ディレクトリに空package.conffiles
のディレクトリを作成しても、それらは自動的に含まれますdebian
。
どうすればそれをやめることができdh_installdeb
ますか?
構成されていないファイルがいくつかあるパッケージをビルドしようとし/etc
ています。conffiles
ディレクトリに空package.conffiles
のディレクトリを作成しても、それらは自動的に含まれますdebian
。
どうすればそれをやめることができdh_installdeb
ますか?
raflの答えを理解しているかどうかはわかりませんが、以下のすべてをほぼ無条件にconffiledh_installdeb
に追加します。conffileを追加しますが、それらを上書きしません。debhelper=9.20120115ubuntu3
/etc
debian/conffiles
で手動で上書きすることが可能debian/rules
です。たとえば、ファイルが conffile として登録されないようにするには、次のようにします。
override_dh_installdeb:
dh_installdeb
find ${CURDIR}/debian/*/DEBIAN -name conffiles -delete
(もちろん、インデントはハードタブでなければなりません)
dpkg-maintscript-helperdebian/<package-name>.preinst
を使用してpreinstスクリプトでアップグレード ルールを定義することができます。
#!/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> -- "$@"
fi
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
exit 0
Vasiliyの答えの延長として私が思いついたのは次のとおりです。dh_installdeb が行うことを効果的に行いますが、/etc
ファイルを自動的に追加することはありません。このようにして、conffile と見なされるファイルとそうでないファイルを完全に制御できるようになります。
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 (または、BASH にシンボリック リンクされているか、その変形である /bin/sh) を使用しています。makefile の内部コマンドのみを使用してこれを実現する方法があるかもしれませんが、私はそれらが得意ではありません。
これは、同じソースから複数のバイナリ パッケージをビルドする場合でも機能するはずであり、プレーンdebian/conffiles
とパッケージ固有のdebian/${pkg}.conffiles
.
もともと、この回答は、debian/conffiles
インストールする実際の構成ファイルのみをリストした独自のファイルを提供することを提案していました。どうやらそれは構成ファイルを追加するだけで、conffiles
ファイル全体を上書きすることはありません。
しかし、なぜあなたがそれを望んでいるのか、私にはよくわかりません。ファイルが構成ファイルでない場合、ユーザーはそれらを編集しないため、自動 conffile 処理がアップグレード時に邪魔になることはありません。また、それらが実際に構成ファイルでない場合は、/etc 以外の場所に単純にインストールして、問題を回避することを強くお勧めします。