Pakete bestimmter Anbieter finden

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche
Edit.png Dieser Artikel ist noch nicht vollständig. Du kannst helfen, ihn zu bearbeiten.
Dieser Artikel ist Teil der Tipps & Tricks Sammlung

Mit der Zeit sammeln sich einige Pakete von verschiedenen Anbietern auf dem eigenen Rechner. Gerade, wenn man nur kurzzeitig ein anderes Repository eines Drittanbieters benutzt hat, kann es bei sich überlappenden Paketen auch schon einmal Probleme bei einem Update geben. Dieser Tipp soll kurz zeigen, wie man alle Pakete eines bestimmten Anbieters identifizieren kann. Dies geschieht am einfachsten über den sogenannten "Vendor"-Eintrag im RPM selbst. Um zu wissen, nach welchem Vendor man suchen soll, kann diese Liste helfen:

  • Fedora Core: Red Hat, Inc.
  • Fedora Updates: Red Hat, Inc.
  • Fedora Extras: Fedora Project
  • Livna: rpm.livna.org
  • FreshRPMS: Freshrpms.net
  • rpmforge: Dries RPM Repository http://dries.ulyssis.org/rpm/
  • ATRPMs: ATrpms.net

Will man z.B. nach allen installierten Paketen suchen, die von FreshRPMS installiert wurden, kann folgender Befehl verwendet werden:

 rpm -qa --qf "%{name} %{vendor}\n" | grep Freshrpms.net | awk ' { print $1 } '

Dies gibt dann nur den Paketnamen aus. Hier einmal ein Beispiel:

dkms-kqemu
freshrpms-release
faad2

Das Paket faad2 macht dabei z.B. Probleme, wenn man hauptsächlich Livna als Repository für Multimediaerweiterungen benutzt. Will man dieses Paket nun vom System entfernen und durch die Variante von Livna ersetzen, können zwei Vorgehensweisen benutzt werden: eine saubere Variante und eine unsaubere Variante mit --nodeps.

sauberes Ersetzen von Paketen

Zuerst soll aber einmal die saubere Variante beschrieben werden: Dabei werden alle von faad2 Abhängigken Pakete entfernt und später wieder aus dem gewünschten Repository nachinstalliert. Dazu legen wir uns aber eine Liste an, die die Nachinstallation erleichtert. Diese Liste enthält alle installierten Pakete:

rpm -qa --queryformat "%{name}\n" | sort > Paketliste.vorher

Nun können wir faad2 mitsamt seiner Abhängigkeiten entfernen:

[root]# yum remove faad2

Zum Abgleich erstellen wir nun wiederum eine aktuelle Paketliste:

 rpm -qa --queryformat "%{name}\n" | sort > Paketliste.nachher

Der letzte Schritt ist nun, alle vorher deinstallierten Pakete wieder zu installieren - nur diesmal aus dem Repository von Livna. Dazu wird die Ausgabe von diff so formatiert, dass nur die Pakete aufgelistet werden, die jetzt nicht mehr installiert sind. Diese Liste wird dabei gleich yum übergeben:

[root]# yum install `diff Paketliste.vorher Paketliste.nachher | grep "<" | awk ' { print $2 }'`

unsauberes Ersetzen von Paketen

<b>Achtung</b> <b>Achtung:</b> Diese Vorgehensweise kann eine inkonsistente Paketdatenbank zurücklassen. Die folgenden Schritte werden nur erfahrenen Benutzern empfohlen.

Bei dieser Vorgehensweise wird der Schalter --nodeps von rpm benutzt. Dadurch wird das Paket, ungeachtet bestehender Abhängigkeiten, aus dem System "gerissen".

[root]# rpm -e --nodeps faad2

Anschließend installieren wird dann das Paket von Livna (das Repository von freshrpms muss jetzt deaktiviert sein!):

[root]# yum install faad2

Zur Sicherheit, dass nicht trotzdem etwas schief gegangen ist, empfiehlt es sich noch, mit package-cleanup aus den yum-utils die Paketdatenkbank auf Abhängigkeitsprobleme zu prüfen:

package-cleanup --problems