web-dev-qa-db-fra.com

Comment savoir à partir de quel dépôt yum un package a été installé?

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é".

159
lg.

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.

45
theotherreceive

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'
22
Martian

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.

11
Michael Hampton
rpm -qi packagename

Vous dira le vendeur et le conditionneur

6
Esmail

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é

5
David A.

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

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)

4
iddqd

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.

4
Swoogan

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.

1
Scott Buchanan

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".

1
smw

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é.

1
Alex

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.

1
gareth_bowles

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

1
cokedude

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.

1
Steven Haigh