現在、ディレクティブを使用して設定ファイルを含む RPM のインストールをテストしていますconfig(noreplace)
。
に従ってconfig(noreplace) を使用する私の仕様ファイルは、単一のファイルを設定ファイルとしてマークします:
%config(noreplace) /opt/lm/dest/conf/db.xml
バージョン 1 のファイルに対してディスク上の変更を行い、バージョン 2 へのアップグレードを進めました。 を使用した場合の への詳細出力で が-Uvh
作成されたことが示されると予想していましたが、実際には作成されてdb.xml.rpmnew
いませんでした。ただし、ディスク上で行った変更はそのままです。
なぜそうなるのか知っている人はいますか?
背景情報: バージョン 1 と 2 の両方を作成するために同じ tar ファイルを使用していますが、違いはないはずですが、念のため言及しておきます。
編集1:
明確でない場合は、db.xml.rpmnew
ファイルは作成されませんでした。
答え1
あなたが観察するのは予想される行動です。.rpmnew
パッケージは、次の両方の条件が満たされた場合にのみ作成されます。
- 新しい RPM パッケージのデフォルトの設定ファイルは、RPM パッケージの現在のバージョンまたは以前のバージョンに元々含まれていた設定ファイルとは異なります。(デフォルトの変更はパッケージのメンテナーによって行われました。)
- ディスク上の実際の構成ファイルは、パッケージの現在のバージョンまたは以前のバージョンに含まれていたデフォルトから変更されています。(デフォルトからの変更は管理者によって行われました。)
変更ログによると:
コミット e64bf5b93ab689e6031fce4489e4ae38ebaebef1
作成者: Panu Matilainen
日付: Tue Aug 28 09:04:09 2007 +0300パッケージ内のファイルが変更されていない場合は .rpmnew を避ける (rhbz#194246)
%config(noreplace) の現在の動作では、現在のファイルのタイプが元々インストールされたものに対して変更された場合にのみ、.rpmnewfile が作成されます。
このパッチは、この動作を変更します。古いものと新しいもの (データベース内およびパッケージ内) が同一である場合 (変更なし)、関数は FA_SKIP を返します (何も上書きされず、パッケージからのファイルのインストールがスキップされるだけです)。このパッチは、古いパッケージと新しいパッケージに
%config
シンボリック リンクが含まれており、ディスク上に通常のファイルがある場合の逆のケースも処理します。Patch from Tomas Mraz.