パッケージのアップグレード時に .rpmnew ファイルが作成されませんか?

パッケージのアップグレード時に .rpmnew ファイルが作成されませんか?

現在、ディレクティブを使用して設定ファイルを含む 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パッケージは、次の両方の条件が満たされた場合にのみ作成されます。

  1. 新しい RPM パッケージのデフォルトの設定ファイルは、RPM パッケージの現在のバージョンまたは以前のバージョンに元々含まれていた設定ファイルとは異なります。(デフォルトの変更はパッケージのメンテナーによって行われました。)
  2. ディスク上の実際の構成ファイルは、パッケージの現在のバージョンまたは以前のバージョンに含まれていたデフォルトから変更されています。(デフォルトからの変更は管理者によって行われました。)

変更ログによると:

コミット e64bf5b93ab689e6031fce4489e4ae38ebaebef1
作成者: Panu Matilainen
日付: Tue Aug 28 09:04:09 2007 +0300

パッケージ内のファイルが変更されていない場合は .rpmnew を避ける (rhbz#194246)

%config(noreplace) の現在の動作では、現在のファイルのタイプが元々インストールされたものに対して変更された場合にのみ、.rpmnewfile が作成されます。

このパッチは、この動作を変更します。古いものと新しいもの (データベース内およびパッケージ内) が同一である場合 (変更なし)、関数は FA_SKIP を返します (何も上書きされず、パッケージからのファイルのインストールがスキップされるだけです)。このパッチは、古いパッケージと新しいパッケージに %configシンボリック リンクが含まれており、ディスク上に通常のファイルがある場合の逆のケースも処理します。

Patch from Tomas Mraz.

関連情報