私はコードをUbuntucoreベースの16.04 LTSにdebパッケージ(cmakeで構築し、CpackDebでパッケージ化)で構築して配布しています。パッケージは設定ファイルなどをインストールします。更新中に古い設定ファイルを保持するためにapt / apt-getを取得できません。編集するかどうかにかかわらず、すべてのテストケースで以前の設定を自動的に上書きします。私が試したこと:
$ apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install <package>
$ export DEBIAN_FRONTEND=noninteractive ; apt-get install -y -o Dpkg::Options::="--force-confold" <package>
また、いくつかの変更があります。結果は常に同じです。つまり、古い設定ファイルを自動的に上書きします。適切なバージョンは1.2.31で、arm64プロセッサを使用しています。
たぶん私はdebを正しくパッケージしていませんか?私のプロフィールは単にインストール可能なプロフィールです。設定ファイルの特別な要件があるかどうかわかりません。もしありますか?
答え1
conffiles
コントロールにファイルを含める必要がありますcontrol.tar.gz
。パッケージ作成時に使用dpkg-debこのファイルは、DEBIAN/conffiles
Debianパッケージに含まれる各設定ファイルに対して1行だけである必要があります。各行は設定ファイルのフルパスを指定します。
バラよりhttps://manpages.debian.org/testing/dpkg-dev/deb-conffiles.5.en.html
このコンテンツを含めると、そのファイルはシステムにプロファイルとして登録され、自動的に上書きされません。
私はCPackDebを直接使用していませんが、ファイルを追加する方法への参照は次のとおりですcontrol.tar.gz
。
https://cmake.org/cmake/help/v3.0/module/CPackDeb.html?highlight=conffiles
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
"${CMAKE_CURRENT_SOURCE_DIR/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm")