Question

Je sais comment utiliser rpm pour répertorier le contenu d'un package ( rpm -qpil package.rpm ). Cependant, cela nécessite de connaître l'emplacement du fichier .rpm sur le système de fichiers. Une solution plus élégante consisterait à utiliser le gestionnaire de paquets, qui dans mon cas est YUM. Comment peut-on utiliser YUM pour y parvenir?

Était-ce utile?

La solution

Il existe un package appelé yum-utils qui repose sur YUM et contient un outil appelé repoquery qui peut le faire.

$ repoquery --help | grep -E "list\ files" 
  -l, --list            list files in this package/group

Combinés dans un exemple:

$ repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

Sur au moins un système RH, avec les versions rpm 4.8.0, yum v3.2.29 et repoquery v0.0.11, repoquery -l rpm n’imprime rien.

Si vous rencontrez ce problème, essayez d'ajouter l'indicateur -install : repoquery --installed -l rpm .

DNF Mise à jour:

Pour utiliser dnf au lieu de yum-utils , utilisez la commande suivante:

$ dnf repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

Autres conseils

rpm -ql [packageName]

Exemple

# rpm -ql php-fpm

/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
...
/run/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-5.6.0
/usr/share/man/man8/php-fpm.8.gz
...
/var/lib/php/sessions
/var/log/php-fpm

Inutile d'installer yum-utils ou de connaître l'emplacement du fichier rpm.

$ yum install -y yum-utils

$ repoquery -l packagename

Je ne pense pas que vous puissiez lister le contenu d'un paquet en utilisant yum, mais si vous avez le fichier .rpm sur votre système local (comme ce sera probablement le cas pour tous les packages installés), vous pouvez utiliser le fichier rpm. commande pour lister le contenu de ce paquet comme suit:

rpm -qlp /path/to/fileToList.rpm

Si vous n'avez pas le fichier de package (.rpm), mais que le paquet est installé, essayez ceci:

rpm -ql packageName

Il y a plusieurs bonnes réponses ici, alors laissez-moi en donner une terrible:

: you can type in anything below, doesnt have to match anything

yum whatprovides "me with a life"

: result of the above (some liberties taken with spacing):

Loaded plugins: fastestmirror
base | 3.6 kB 00:00 
extras | 3.4 kB 00:00 
updates | 3.4 kB 00:00 
(1/4): extras/7/x86_64/primary_db | 166 kB 00:00 
(2/4): base/7/x86_64/group_gz | 155 kB 00:00 
(3/4): updates/7/x86_64/primary_db | 9.1 MB 00:04 
(4/4): base/7/x86_64/primary_db | 5.3 MB 00:05 
Determining fastest mirrors
 * base: mirrors.xmission.com
 * extras: mirrors.xmission.com
 * updates: mirrors.xmission.com
base/7/x86_64/filelists_db | 6.2 MB 00:02 
extras/7/x86_64/filelists_db | 468 kB 00:00 
updates/7/x86_64/filelists_db | 5.3 MB 00:01 
No matches found

: the key result above is that "primary_db" files were downloaded

: filelists are downloaded EVEN IF you have keepcache=0 in your yum.conf

: note you can limit this to "primary_db.sqlite" if you really want

find /var/cache/yum -name '*.sqlite'

: if you download/install a new repo, run the exact same command again
: to get the databases for the new repo

: if you know sqlite you can stop reading here

: if not heres a sample command to dump the contents

echo 'SELECT packages.name, GROUP_CONCAT(files.name, ", ") AS files FROM files JOIN packages ON (files.pkgKey = packages.pkgKey) GROUP BY packages.name LIMIT 10;' | sqlite3 -line /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite 

: remove "LIMIT 10" above for the whole list

: format chosen for proof-of-concept purposes, probably can be improved a lot

Yum n’a pas son propre type de paquet. Yum fonctionne et aide à gérer les RPM. Vous pouvez donc utiliser yum pour répertorier les RPM disponibles, puis exécuter la commande rpm -qlp pour afficher le contenu de ce package.

actuellement reopquery est intégré dans dnf et yum , de sorte que vous tapez:

dnf repoquery -l <pkg-name>

listera le contenu des packages à partir d'un référentiel distant (même pour les packages qui ne sont pas encore installés)

ce qui signifie installer un package dnf-utils ou yum-utils séparé n'est plus nécessaire pour la fonctionnalité car il est maintenant pris en charge de manière native.

pour la liste installé ou local (fichiers * .rpm ), le contenu du package contient rpm -ql .

Je ne pense pas que cela soit possible avec miam org dnf (et non la sous-commande repoquery )

corrigez-moi si je me trompe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top