it-swarm.com.de

Ignorieren von Konflikten bei RPM-Installationen

Ich habe eine Reihe von RPM-Dateien in einem Ordner. Ich versuche, sie mit rpm -ivh *.rpm Zu installieren, damit rpm für die richtige Installationsreihenfolge sorgen kann.

Auf einigen dieser RPMs ist eine neuere Version auf meinem System installiert, so dass ich zum Beispiel Folgendes erhalte:

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 aufzulö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 das Verlassen der neuen Version?

Irgendwelche Gedanken sind willkommen.

29
Cobra Kai Dojo

Die Option --force Installiert bereits installierte Pakete neu und überschreibt bereits installierte Dateien aus anderen Paketen. Das willst du normalerweise nicht.

Wenn Sie rpm anweisen, alle RPMs aus einem bestimmten Verzeichnis zu installieren, wird genau dies ausgeführt. 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 wird die Abhängigkeit mit der neueren Version des installierten RPM auflösen. Dies 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 verschiebbar sein. Sie können dann rpm anweisen, das bestimmte 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 Edelsteine ​​als verschiebbare RPMs bei der Arbeit. So kann ich verschiedene Versionen desselben Edelsteins installieren.

Ich weiß nicht, bei welchen Dateien Ihre RPMs in Konflikt stehen, aber wenn es sich bei allen um "nur" Manpages handelt, können Sie die neuen wahrscheinlich einfach 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 sich um die aktuelle Version handelt. Ein weiteres Problem wäre der Befehl rpm --verify. Es wird sich über das neue Paket beschweren, wenn das alte einige Dateien überschrieben hat.

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

22
xoryves

Versuchen Sie den Befehl "Aktualisieren":

rpm -Fvh *.rpm
8
Kalim Sayyed

Aus dem Kontext wurde der Konflikt durch die Version des Pakets verursacht.
Schauen wir uns das Handbuch zu rpm an:

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

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

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

6
James