web-dev-qa-db-fra.com

Yum peut-il me dire lequel de mes référentiels fournit un package particulier?

Espérons que la version courte de la question: si je suis sur une machine sur laquelle un package particulier est installé, y a-t-il une commande yum qui me dira lequel de ses référentiels configurés a fourni ce package? (Ou alternativement, quel référentiel fournirait un paquet encore à installer.)

Contexte dans le cas où un certain contexte est nécessaire: nous avons un dédale de référentiels yum dont nous puisons. J'ai une machine sur laquelle un package rpm particulier est installé, et une autre machine avec un labyrinthe apparemment insuffisant de référentiels configuré, et donc je ne suis pas en mesure d'installer le package que je veux sur cette machine. J'ai besoin d'ajouter le minimum de référentiels nécessaires à la nouvelle machine. Je ne peux pas simplement fusiller les référentiels d'une machine à l'autre. Et juste sortir et saisir le rpm n'est pas une option car j'ai besoin que cela soit reproductible.

38
Brian Deacon
yum list packagename

Cela montrera à partir de quel référentiel le package se trouve dans la troisième colonne de la sortie.

Pour les packages déjà installés, cela ne fonctionnera pas, car la troisième colonne indique simplement "installé". Dans ce cas, vous pouvez par exemple "rpm -qi packagename", généralement les balises Vendor, Packager et Build Host donneront une indication à quel référentiel appartient le package. De plus, il est assez courant qu'un symbole de dépôt soit ajouté au numéro de version du package.

41
janneb
repoquery -i {packagename} 

Cela vous donnera le nom réel du dépôt par rapport au "installé" inutile que yum retourne. le repoquery est fourni par yum-utils.

26
8None1

Vous pouvez utiliser yum -v search qui vous montrerait les packages avec le référentiel dans lequel ils sont présents. Si vous ajoutez également --showduplicates vous verrez toutes les versions de ce paquet.

Nous remercions: http://www.spinics.net/linux/Fedora/yum/msg11975.html

13
akostadinov

Pour un seul package, 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 packages 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.

2
sciurus

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

rpm -qi {packagename}

ou

repoquery -i {packagename}

Références:

1
jeffmcneill
yum reinstall [package_name]

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

Exemple de sortie 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]:
0
lcfd