Après avoir installé un package par yum (avec plusieurs référentiels configurés), comment puis-je trouver à partir de quel référentiel il a été installé?
Si je lance yum info package-name
(ou yum list package-name
), Je peux seulement voir que le paquet est "installé".
Avec yum-utils installé, le repoquery fournira les informations que vous recherchez (ici "epel" étant le référentiel).
└─[$]> repoquery -i cherokee
Name : cherokee
Version : 0.99.49
Release : 1.el5
Architecture: i386
Size : 8495964
Packager : Fedora Project
Group : Applications/Internet
URL : http://www.cherokee-project.com/
Repository : epel
Summary : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.
Quelle version de miam?
Sur la version actuelle, si le package installé est la même version que la plus récente disponible, le référentiel à partir duquel il a été installé s'affiche.
$ yum info irssi
Installed Packages
Name : irssi
Arch : i586
Version : 0.8.14
Release : 1.fc11
Size : 2.3 M
Repo : installed
From repo : updates
Summary : Modular text mode IRC client with Perl scripting
URL : http://irssi.org/
License : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
: frontend is currently supported. The GTK/GNOME frontend is no
: longer being maintained.
$ yum --version
3.2.23
Si un package plus récent est disponible, il sera affiché séparément, la nouvelle version indiquant le référentiel à partir duquel il est disponible.
Arrivant trop tard mais (au moins sur Fedora 15), on peut utiliser yumdb pour des requêtes similaires:
yumdb info 'python*'
Et ce dont j'avais réellement besoin pour lister les packages des repo donnés:
yumdb search from_repo 'my-*-repo'
Si tout le reste échoue, vous pouvez inspecter le yumdb manuellement. Il est situé dans /var/lib/yum/yumdb
et contient des informations détaillées sur chaque package installé. Vous serez particulièrement intéressé par from_repo
. Par exemple, pour le bind-utils
paquet:
# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6
Pour obtenir uniquement les informations que vous souhaitez:
# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates
Les versions ultérieures fourniront encore plus de données; par exemple, dans EL 7, le miroir exact et l'URL à partir desquels le package a été téléchargé sont stockés ici.
rpm -qi packagename
Vous dira le vendeur et le conditionneur
Pour voir ce qui est installé à partir de repo epel: (devrait fonctionner sous Centos 5.5) notez que si vous n'avez pas de repo nommé epel, il crachera tout ce qui est installé.
repoquery --repoid = epel -a | xargs yum list installé
Basé sur et réponse par Swoogan
Sur RedHat et CentOS on peut faire
Sudo grep -ir PACKAGE_NAME /var/cache/yum/
Les résultats devraient ressembler à quelque chose
Binary file /var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches
Où nom_référentiel est le référentiel où votre paquet peut être trouvé, et il a probablement été installé à partir du premier d'une liste (voir yum repolist)
Si le paquet a été installé récemment, vous pouvez regarder dans/var/cache/yum.
Dans ce répertoire, il y a un répertoire pour chaque dépôt, et dans celui-ci un répertoire de packages. Donc, vous feriez quelque chose comme:
find /var/cache/yum -name [package-name]*
Cependant, le cache doit être activé dans votre fichier /etc/yum.conf:
cachedir=/var/cache/yum
keepcache=1
Notez qu'un yum clean [packages|all]
effacera le répertoire cache.
Si le répertoire de cache est vide, il existe une autre manière. Les informations lues par yum info [package]
provient de /var/cache/yum/[repo diplomatique/primary.xml.gz
Vous pouvez parcourir le fichier en entrant:
gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'
Cependant, sur les machines où yum info [package]
n'affiche pas "From repo:", comme indiqué par 'theotherreceive', c'est parce qu'il n'est pas dans le fichier primary.xml, donc il n'y aura aucun moyen de récupérer ces informations. Par conséquent, si le package se trouve dans deux ou plusieurs fichiers primary.xml, vous devrez déterminer la priorité de repo sur votre système.
L'approche la plus simple et la plus directe sans installation d'outils supplémentaires, sans greping ou sans sortie d'informations superflues est simplement:
yum list installed [package name]
La troisième colonne fournira l'ID du référentiel à partir duquel le package a été installé.
Cela a été mentionné dans un commentaire sur la question d'origine en utilisant grep, mais ce n'est pas nécessaire. Vous pouvez simplement passer le nom du package directement à yum
pour filtrer.
Vous pouvez ajouter le drapeau détaillé à "info miam":
yum info -v <package_name>
Le référentiel d'installation sera sous la sortie "From repo".
Ces informations sont-elles saisies quelque part? Le paquet n'a pas cette information, et yum s'en fiche après avoir trouvé le paquet. Vous pouvez probablement le reconstituer en déterminant quels dépôts ont le package, puis en déterminant celui qui a la priorité.
Ce n'est pas une excellente solution, mais j'ai trouvé que la liste yum disponible vous montrera où la version la plus récente de chaque package est disponible, par exemple:
liste de miam disponible | grep gstreamer
PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10 updates
mises à jour bluez-gstreamer.i386 4.30-2.fc10
gstreamer.i386 0.10.21-2.fc10 Fedora
gstreamer-devel.i386 0.10.21-2.fc10 Fedora
gstreamer-devel.x86_64 0.10.21-2.fc10 Fedora
gstreamer-plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusion-free
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion-free
Vous pouvez donc faire une liste yum disponible sur votre package, puis comparer votre version installée à l'aide de la liste yum installée, et avoir une bonne idée de son repo si les versions correspondent.
Aucune des commandes ci-dessus n'a fonctionné pour moi. Voilà ce que je devais faire.
yum provides "*compat-libstdc*"
Une bonne référence est ici.
https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-1.pdf
Je sais donc que c'est une question un peu ancienne - mais elle revient sur la recherche Google pour ce que je cherchais.
Il existe également une méthode pour obtenir une liste unique de dépôts utilisés:
# repoquery -ai | grep 'Repository : ' | sort | uniq
Cela répertorie les référentiels sur lesquels des packages ont été installés.