fragen stichworte

.rpmnew-Datei nicht beim Paketupgrade erstellt?

Ich teste gerade die Installation eines RPMs mit einer Konfigurationsdatei mithilfe der config(noreplace) -Direktive.

Wie in unter Verwendung von config (noreplace) markiert meine Spezifikationsdatei eine einzelne Datei als Konfigurationsdatei:

%config(noreplace)/opt/lm/dest/conf/db.xml

Ich habe die Datei für Version 1 auf der Festplatte geändert und fuhr dann mit dem Upgrade auf Version 2 fort. Ich erwartete die ausführliche Ausgabe (bei Verwendung von -Uvh), um anzuzeigen, dass sie ein db.xml.rpmnew erstellt hat, das nicht verwendet wurde Die von mir vorgenommenen Änderungen an der Festplatte sind jedoch intakt.

Weiß jemand, warum dies der Fall sein könnte?

Einige Hintergrundinformationen: Ich verwende dieselbe tar-Datei, um Version 1 & amp; 2 was keinen Unterschied machen sollte, aber ich dachte, ich würde es trotzdem erwähnen.

EDIT 1:

Falls nicht klar, dass die db.xml.rpmnew -Datei nicht erstellt wurde.

rpm

antworten

Was Sie beobachten, ist erwartetes Verhalten. Ein .rpmnew -Paket wird nur erstellt, wenn die beiden folgenden Bedingungen erfüllt sind:

  1. Die Standardkonfigurationsdatei im neuen RPM-Paket unterscheidet sich von der Konfigurationsdatei, die ursprünglich in der aktuellen/vorherigen Version des RPM-Pakets enthalten war. (Die Standardeinstellungen wurden vom Paketbetreuer geändert.)
  2. Die tatsächliche Konfigurationsdatei auf der Festplatte wurde gegenüber dem Standard geändert, der in der aktuellen/vorherigen Version des Pakets enthalten war. (Änderungen gegenüber den Standardeinstellungen wurden vom Administrator vorgenommen.)

Gemäß dem Änderungsprotokoll:

commit e64bf5b93ab689e6031fce4489e4ae38ebaebef1
Author: Panu Matilainen
Date: Tue Aug 28 09:04:09 2007 +0300

Avoid .rpmnew when the file hasn't changed in package (rhbz#194246)

The current behavior of %config(noreplace) creates a .rpmnewfile iff the type of the current file has been changed wrto what was originally installed.

The patch changes this behavior so when old and new (in db and in package) is identical -> not changed, the function returns FA_SKIP -> it won't clobber anything, it simply skips installation of the file from the package. This patch handles also the opposite case when old and new packages contain %config symlink and we have regular file on disk.

Patch from Tomas Mraz.