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.
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.
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.
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
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
.
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:
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]: