2009-06-15 7 views
2

Ich habe ein RPM-Paket, das bereits im System installiert ist. Ich möchte das alte Paket durch das neue Paket mit einem anderen Paketnamen ersetzen. Die "rpm -Uvh [Paketname]" sollte ausreichen, um das alte Paket durch das neue zu ersetzen.

Nach einigen Nachforschungen im Internet fand ich, dass "Obsoletes" verwendet wird, um ein altes Paket zu veralten und es durch ein neues Paket mit einem anderen Namen zu ersetzen. Ich habe "Obsoletes" in meiner RPM-Spezifikationsdatei verwendet, aber wenn ich versuche, das alte Paket zu aktualisieren, wird der% preun des alten Pakets mit $ 1 = 0 aufgerufen, was 1 $ = 1 ist korrigiere mich, wenn ich irgendwo falsch liege. Gibt es eine bessere Lösung für dieses Problem?

Dank

Antwort

1

Gibt es eine bessere Lösung für dieses Problem?

rpm -e --nopreun <old-package> && rpm -i <new-package>

Sie selektiv aktivieren und bestimmte Skripte mit --no<scriptname>, oder Sie können alle Skripte mit --noscripts deaktivieren deaktivieren.

Stellen Sie sicher, dass Sie die verschiedenen Skripts für das neue Paket überprüfen. Sie müssen möglicherweise einige von ihnen auch deaktivieren.

-steve

p.s. Dies wäre wahrscheinlich eine Frage besser auf ServerFault geschrieben. :)

1

Mein Verständnis für Ihr Problem ist, dass das alte Paket tut etwas in seinem% preun Skript, das Sie es nicht (ein Benutzerkontos oder so etwas wie das Löschen) tun möchten, nicht wahr?

Eine Möglichkeit, dies zu umgehen, könnte darin bestehen, eine Zwischen-Dummy-RPM-Version N + 1 des alten Pakets zu erstellen, die keine Dateien enthält, auf diese aktualisieren und dann auf Ihr endgültiges neues Paket aktualisieren.

+1

Ja, Sie sind richtig, aber ich kann das Dummy-Paket nicht an die Benutzer verteilen. Der% preun Scriptlet ist hier verantwortlich für das Stoppen des Daemon und das Entfernen der Einträge von "chkconfig". Gibt es eine andere Möglichkeit, auf ein neues Paket mit einem anderen Paketnamen zu aktualisieren, und das% preun Scriptlet des alten Pakets wird nicht ausgeführt oder mit $ 1 = 1 ausgeführt. – Supratik

Verwandte Themen