2013-07-10 12 views
21

Ich habe eine Reihe von RPM-Dateien in einem Ordner. Ich versuche, sie unter Verwendung zu installieren: rpm -ivh *.rpm, damit rpm die korrekte Installationsreihenfolge aufpassen kann.RPM ignorieren Konflikte

Auf einigen dieser rpms habe ich eine neuere Version in meinem System installiert, damit ich zum Beispiel:

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1

Gibt es eine Möglichkeit, die alte .rpm-Datei zu ignorieren und die Abhängigkeit mit der neuen Version lösen, die bereits installiert ist? Ich dachte an die Option --force. Aber wie --force löst die Konflikte? Überschreibt sie mit der älteren Version oder ignoriert sie einfach, die neue Version verlassend?

Alle Gedanken sind willkommen.

Antwort

3

Aus dem Kontext wurde der Konflikt durch die Version des Pakets verursacht.
Lassen Sie sich ein das Handbuch über rpm betrachten:

--force 
    Same as using --replacepkgs, --replacefiles, and --oldpackage. 

--oldpackage 
    Allow an upgrade to replace a newer package with an older one. 

Also, Sie rpm -Uvh info-4.13a-2.rpm --force den Befehl ausführen können, um Ihr Problem zu lösen.

+1

Das hat meine Frage nicht beantwortet. Wie ich schon sagte, ich möchte das NEUE Paket installiert lassen. Ersetze es nicht mit dem alten ... –

7

Versuchen Befehl Erfrischen:

rpm -Fvh *.rpm 
+0

Der Auffrischbefehl aktualisiert nur Pakete, die sich bereits im System befinden.Keine Verwendung, wenn ich ein neues Paket installieren möchte ... –

+0

Ich glaube nicht, dass wir zwei verschiedene Versionspakete auf dem Server installieren können. –

15

Die --force Option neu installiert bereits Pakete installiert und überschreiben bereits installierten Dateien aus anderen Paketen. Das willst du normalerweise nicht.

Wenn Sie rpm sagen, alle RPMs aus einem Verzeichnis zu installieren, dann tut es genau dies. rpm kann die für die Installation aufgelisteten RPMs nicht ignorieren. Sie müssen die nicht benötigten RPMs manuell aus der Liste (oder dem Verzeichnis) entfernen.

Sie können das alte RPM entfernen und rpm löst die Abhängigkeit mit der neueren Version des installierten RPM. Das funktioniert aber nur, wenn keines der zu installierenden RPMs genau von der alten Version abhängt. Wenn Sie wirklich verschiedene Versionen desselben RPM benötigen, muss das RPM relocatable sein. Sie können dann rpm mitteilen, das spezifische RPM in einem anderen Verzeichnis zu installieren. Wenn die Dateien nicht in Konflikt stehen, können Sie einfach verschiedene Versionen mit rpm -i installieren (zypper in kann nicht verschiedene Versionen desselben RPM installieren). Ich verpacke zum Beispiel Ruby Gems als verschiebbare RPMs bei der Arbeit. So kann ich verschiedene Versionen des gleichen Edelsteins installiert haben.

Ich weiß nicht, auf welchen Dateien Ihre RPMs widersprüchlich sind, aber wenn alle "nur" man-Seiten sind, dann können Sie wahrscheinlich einfach die neuen mit den alten mit rpm -i --replacefiles überschreiben. Das einzige Problem dabei wäre, dass es jemanden verwirren könnte, der die alte Manpage liest und denkt, dass es für die aktuelle Version ist. Ein anderes Problem wäre der Befehl rpm --verify. Es wird sich über das neue Paket beschweren, wenn das alte Paket einige Dateien überschrieben hat.

Ist dies möglicherweise ein Duplikat von https://serverfault.com/questions/522525/rpm-ignore-conflicts?