Peut-on me dire lesquels de mes repositorys fournissent un paquet particulier?

J’espère que la version courte de la question: Si je suis sur une machine qui a un paquet particulier installé, y a-t-il une commande yum qui me dira lequel des repositorys configurés a fourni ce paquet? (Ou alternativement, quel référentiel fournirait un paquet à installer.)

Contexte dans le cas où un contexte est nécessaire: nous tirons un labyrinthe de référentiels yum. J’ai une machine sur laquelle un paquet rpm particulier est installé, et une autre machine avec un labyrinthe de repositorys apparemment insuffisant, et je ne peux donc pas installer le paquet que je veux sur cette machine. Je dois append les repositorys minimaux nécessaires à la nouvelle machine. Je ne peux pas simplement fusiller les repositorys d’une machine à l’autre. Et sortir et attraper le régime n’est pas une option parce que j’ai besoin de cela pour être reproductible.

yum list packagename 

Cela montrera de quel repository le paquet est dans la troisième colonne de la sortie.

Pour les paquets déjà installés, cela ne fonctionnera pas, comme le montre la troisième colonne “installé”. Dans ce cas, vous pouvez faire, par exemple, “rpm -qi packagename”, généralement les balises Vendor, Packager et Build Host donneront une indication sur le référentiel auquel appartient le package. De plus, il est fréquent que certains repo soient ajoutés au numéro de version du package.

 repoquery -i {packagename} 

Cela vous donnera le nom réel de repo vs l’inutile “installé” que yum retourne. La répétition est assurée par yum-utils.

Vous pouvez utiliser la yum -v search qui vous montrera les paquets avec le --showduplicates il se trouve. Si vous ajoutez également --showduplicates vous verrez toutes les versions de ce paquet.

Crédit à: http://www.spinics.net/linux/fedora/yum/msg11975.html

Pour un seul paquet, vous pouvez le trouver avec

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

Remplacez $ PACKAGE par le nom du paquet qui vous intéresse.

Vous pouvez trouver tous les paquets provenant d’un référentiel spécifique avec

 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 

Remplacez $ REPO par l’id du référentiel qui vous intéresse; vous pouvez voir les identifiants de tous vos référentiels activés avec yum repolist .

Voici quelques moyens de découvrir le référentiel pour un package installé donné:

 rpm -qi {packagename} 

ou

 repoquery -i {packagename} 

Les références:

 yum reinstall [package_name] 

Ensuite, lorsque vous êtes invité à confirmer, vous pouvez choisir N ​​pour ne pas modifier votre système:

Sortie de l’échantillon sur un 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]: