2009-03-11 14 views
28

Hoffentlich kurze Version der Frage: Wenn ich auf einer Maschine bin, die ein bestimmtes Paket installiert hat, gibt es einen Yum-Befehl, der mir sagen wird, welche seiner konfigurierten Repositories dieses Paket bereitgestellt? (Oder alternativ, welches Repository ein noch zu installierendes Paket bereitstellen würde.)Kann mir sagen, welche meiner Repositories ein bestimmtes Paket bereitstellen?

Hintergrund für den Fall, dass ein Kontext benötigt wird: Wir haben ein Labyrinth von yum-Repositories, aus denen wir schöpfen. Ich habe eine Maschine, auf der ein bestimmtes RPM-Paket installiert ist, und eine andere Maschine, auf der anscheinend ein nicht ausreichendes Labyrinth von Repositories konfiguriert ist. Daher kann ich das gewünschte Paket nicht auf diesem Rechner installieren. Ich muss dem neuen Rechner die minimal notwendigen Repositories hinzufügen. Ich kann nicht einfach die Repositories von einer Maschine zur anderen schießen. Und einfach rauszugehen und die Drehzahl zu packen, ist keine Option, weil ich es brauche, um reproduzierbar zu sein.

Antwort

30
yum list packagename 

Das zeigt an, aus welchem ​​Repository das Paket in der dritten Spalte der Ausgabe ist.

Für bereits installierte Pakete, das wird nicht funktionieren, wie die dritte Spalte zeigt nur "installiert". In diesem Fall können Sie z.B. "rpm -qi Paketname", normalerweise geben die Tags Hersteller, Packager und Build-Host an, zu welchem ​​Repository das Paket gehört. Außerdem ist es üblich, dass ein Reposymbol an die Versionsnummer des Pakets angehängt wird.

+0

Atomic Repo-Benutzer: Der Anbieter ist leer für Atomic RPMs, aber wenn der "Build Host" ist "archelon", es ist von Atomic. – johnorourke

23
repoquery -i {packagename} 

Dies wird Ihnen den tatsächlichen Repo-Namen vs die nicht hilfreiche "installiert", die yum zurückgibt. Repoquery wird von yum-utils zur Verfügung gestellt.

1

Für ein einzelnes Paket, können Sie diese finden mit

PACKAGE=ruby-enterprise 
repoquery --qf "%{repoid}" $PACKAGE 

ersetzen $ -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 $ REPO mit der ID des Repositorys um dich kümmern; Sie können die IDs aller aktivierten Repositorys mit yum repolist sehen.

0
yum reinstall [package_name] 

Dann fragte, wann zu bestätigen, können 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]: 
Verwandte Themen