RPM-Upgrade deinstalliert das RPM
Ich bin Modernisierung unseres Projektes U /MIN. Das problem ist, wenn ich ein upgrade von projectname-1.0-0-Projektname-1.0-1 zuerst installiert das neue Projekt und deinstalliert das alte Projekt, das im Gesamtbild, entfernt mein Projekt völlig. Benutzt habe ich "vv" - option während der Aktualisierung und die Ausgabe zeigte die deinstallation wird nach der installation durchgeführt.
Bitte jemand helfen mit diesem problem. Gibt es irgendetwas, was ich ändern sollte, speziell in der RPM-spec oder rpmbuild-Optionen?
InformationsquelleAutor der Frage Vidya | 2011-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, wenn ein RPM-Aktualisierung Auftritt, RPM zuerst installiert die neue version von dem Paket und dann deinstalliert die alte version des Pakets. Nur die Dateien im alten Paket entfernt werden. Aber Ihre Skripts (d.h. %pre, %post, %preun, %postun) müssen wissen, ob Sie sind, handling ein upgrade oder einfach nur ein plain installieren oder deinstallieren.
Dem rpm-Befehl übergeben wird, ein argument zu Ihren Skripts, das heißt, die $1, die die Anzahl der Versionen des Pakets, das installiert wird. Die Tabelle unten (von der RedHat RPM Guide von Eric Foster-Johnston) stellt ein Beispiel über mögliche Werte.
So, in %preun, werden Sie wahrscheinlich wollen, um zu überprüfen, ob "$1 = 0" vor dem entfernen von services.
Weitere Informationen (und einen besseren Tisch) finden Sie unter: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s04s05.html
InformationsquelleAutor der Antwort Christian
Ja. Während der rpm-Installation, %install und %post-Skripten aufgerufen werden. Nach erfolgreicher installation, %preun und %postun-Skript wird aufgerufen werden, um die Vorherige version deinstallieren von rpm. Wenn nicht richtig gehandhabt wird, diese %preun und %postun-Skripte manipulieren können und die Veränderungen, die in von %install und %post-Skripten.
Rpm setzt $1 argument mit den entsprechenden Werten zu unterscheiden, die Anzahl der rpm-Versionen installiert. Während der Neuinstallation von projectname-1.0-0, %install und %post-Skripten aufgerufen wird $1 auf 1 gesetzt, anzeigt, dass dies die einzige aktive version. Beim Upgrade auf projectname-1.0-1, %install und %post-Skripten aufgerufen wird $1 auf 2 gesetzt. Nach dem, %preun und %postun-Skript wird aufgerufen mit $1 auf 1 gesetzt, so clean-up-Stoffe von projectname-1.0-0. So, indem Sie die spec-Datei nach $1 der Wert, den wir behandeln können, die upgrades effektiv.
InformationsquelleAutor der Antwort Ashok Vairavan
Beim upgrade eines RPM-Pakets, Skripts ausgeführt werden, in folgender Reihenfolge:
Ob die installation ist frisch oder-upgrade, es ist ein argument übergeben, um jedes Skript stellt die Anzahl der RPMs installiert mit dem gleichen Paket mit verschiedenen Versionen.
Für pre & post-Skripte es wird 1 im Falle der ersten installieren.
Für preun & postun-Skripte es wird 0 für das Letzte deinstallieren.
Was geschieht, in Ihrem Fall ist, dass preun oder postun-Skripte möglicherweise das löschen von Dateien, die hilfreich für das neue Paket. Sie brauchen nicht zu sorgen über manuellen löschen von Dateien in postun-Skripte, wird es behandelt werden intelligent sein, die RPM selbst.
ref: Upgrade & deinstallieren
InformationsquelleAutor der Antwort avg598
ist es wichtig zu verstehen, wie deinstallieren Abschnitte der Arbeit auf upgrade
Haben wir eine variable $1, die geprüft werden können, bei der pre, post, nicht, unpost (dessen Wert unterscheidet sich basierend auf installieren, aktualisieren, deinstallieren)
Je nach Wert können wir sagen, ob Sie installieren oder aktualisieren von in U /min
E. g:
Upgrade abc-1 von version 1 auf version 2 (abc-2)
InformationsquelleAutor der Antwort Kiril