Kann mir yum sagen, welche meine Repositories ein bestimmtes Paket zur Verfügung stellen?
-
10-07-2019 - |
Frage
Hoffentlich kurze Version der Frage: Wenn ich auf einer Maschine bin, dass ein bestimmtes Paket installiert hat, gibt es ein yum-Befehl, der mir sagen wird, welche es konfigurierten Repositorys das Paket zur Verfügung gestellt? (Oder alternativ, welche Repository würde ein noch-zu-sein-installiertes Paket.)
Hintergrund bei einigem Kontext benötigt wird: Wir haben ein Labyrinth von yum-Repositories, die wir aus ziehen. Ich habe eine Maschine, die ein bestimmtes RPM-Paket installiert ist, und eine andere Maschine mit einem scheinbar nicht genügend Labyrinth von Endlagern konfiguriert ist, und so bin ich nicht in der Lage, das Paket ich auf dieser Maschine installieren möchten. Ich brauche die minimal erforderlichen Repositories auf die neue Maschine hinzuzufügen. Ich kann nicht nur der Schrotflinte die Repositories von einer Maschine zur anderen. Und Ausgehen und die Drehzahl Grabbing ist keine Option, da ich brauche diese reproduzierbar zu sein.
Lösung
yum list packagename
Das zeigen wird, aus dem die Paket-Repository in der dritten Spalte der Ausgabe ist.
Für bereits installierte Pakete, das wird nicht funktionieren, da die dritte Spalte zeigt nur „installiert“. In diesem Fall können Sie tun, zum Beispiel „Rpm -qi Paket“, in der Regel der Verkäufer, Packager und Host-Tags Erstellen Sie einen Hinweis auf das geben Repository das Paket gehört. Auch ist es durchaus üblich, einige Repo-Symbol auf die Paketversionsnummer angehängt wird.
Andere Tipps
repoquery -i {packagename}
Dies gibt Ihnen den tatsächlichen Repo Namen vs der nicht hilfreich „installiert“, dass yum zurückkehrt. repoquery durch yum-utils zur Verfügung gestellt.
Sie können yum -v search
verwenden, die Sie Pakete zusammen mit Repo zeigen würde es in ist. Wenn Sie auch --showduplicates
hinzufügen finden Sie alle Versionen dieses Pakets sehen.
Kredit an: http://www.spinics.net/linux/fedora /yum/msg11975.html
Für ein einzelnes Paket, können Sie dies mit
findenPACKAGE=ruby-enterprise
repoquery --qf "%{repoid}" $PACKAGE
Ersetzen Sie $ -Paket mit dem Namen des Pakets, die Sie interessieren.
Sie können alle Pakete finden, die aus einem bestimmten Repository kam mit
REPO=ruby-enterprise-opt
repoquery --repoid=$REPO -a --qf "%{name}" | sort > repo_packages
rpm -qa --qf "%{name}\n" | sort > installed_packages
comm -1 -2 repo_packages installed_packages
Ersetzen Sie $ REPO mit der ID des Repositorys um dich kümmern; Sie können die IDs aller aktivierten Repositorys mit yum repolist
sehen.
Hier sind einige Möglichkeiten für das Repository für ein bestimmtes installierte Paket zu entdecken:
rpm -qi {packagename}
oder
repoquery -i {packagename}
Referenzen:
yum reinstall [package_name]
Dann fragt, wann zu bestätigen, können Sie N wählen, um Ihr System zu ändern:
Beispiel für die Ausgabe auf einem CentOS:
Resolving Dependencies
--> Running transaction check
---> Package mc.x86_64 1:4.6.1a-35.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================================================
Package Arch Version Repository Size
==============================================================================================================================================
Reinstalling:
mc x86_64 1:4.6.1a-35.el5 base 2.1 M
Transaction Summary
==============================================================================================================================================
Remove 0 Package(s)
Reinstall 1 Package(s)
Downgrade 0 Package(s)
Total download size: 2.1 M
Is this ok [y/N]: