.rpmnew-Datei beim Paket-Upgrade nicht erstellt?

.rpmnew-Datei beim Paket-Upgrade nicht erstellt?

Ich teste derzeit die Installation eines RPM mit einer Konfigurationsdatei unter Verwendung der config(noreplace)Direktive.

Gemäßmit config(noreplace)Meine Spezifikationsdatei markiert eine einzelne Datei als Konfigurationsdatei:

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

Ich habe eine Änderung auf der Festplatte an der Datei für Version 1 vorgenommen und dann mit dem Upgrade auf Version 2 fortgefahren. Ich hatte erwartet, dass die ausführliche Ausgabe (bei Verwendung -Uvh) angibt, dass ein erstellt wurde, db.xml.rpmnewwas nicht der Fall war. Die Änderungen auf der Festplatte, die ich vorgenommen habe, sind jedoch intakt.

Weiß jemand, warum das so sein könnte?

Einige Hintergrundinformationen: Ich verwende dieselbe Tar-Datei, um Version 1 und 2 zu erstellen. Das sollte keinen Unterschied machen, aber ich dachte, ich erwähne es trotzdem.

BEARBEITEN 1:

Falls es nicht klar war: Die db.xml.rpmnewDatei wurde nicht erstellt.

Antwort1

Was Sie beobachten, ist das erwartete Verhalten..rpmnewEin 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. (Änderungen an den Standardeinstellungen wurden vom Paketbetreuer vorgenommen.)
  2. Die aktuelle Konfigurationsdatei auf der Festplatte wurde gegenüber der Standardeinstellung geändert, die in der aktuellen/vorherigen Version des Pakets enthalten war. (Die Änderungen an den Standardeinstellungen wurden vom Administrator vorgenommen.)

Laut Changelog:

Commit e64bf5b93ab689e6031fce4489e4ae38ebaebef1
Autor: Panu Matilainen
Datum: Dienstag, 28. August 2007, 09:04:09 Uhr +0300

Vermeiden Sie .rpmnew, wenn sich die Datei im Paket nicht geändert hat (rhbz#194246)

Das aktuelle Verhalten von %config(noreplace) erstellt eine .rpmnewfile, wenn der Typ der aktuellen Datei im Vergleich zur ursprünglich installierten Datei geändert wurde.

Der Patch ändert dieses Verhalten, sodass, wenn Alt und Neu (in der Datenbank und im Paket) identisch sind -> nicht geändert, die Funktion FA_SKIP zurückgibt -> es wird nichts überschrieben, es überspringt einfach die Installation der Datei aus dem Paket. Dieser Patch behandelt auch den umgekehrten Fall, wenn alte und neue Pakete %configsymbolische Links enthalten und wir eine reguläre Datei auf der Festplatte haben.

Patch from Tomas Mraz.

verwandte Informationen