Comment lister les dépendances RPM?

36

Notre serveur de production exécute la version 5.2 (finale) de CentOS.

Comment voir / obtenir / lister toutes les dépendances d'un paquet RPM déjà installé ?

Par exemple: SQLite v3.3.6 est déjà installé sur le serveur. Je veux voir toutes les dépendances de ce paquet particulier.

Voici le résultat de la commande: rpm -qa |grep sqlite

python-sqlite-1.1.7-1.2.1
sqlite-3.3.6-2
sqlite-3.3.6-2

Aussi, pourquoi énumère-t-il 2 entrées sqlite-3.3.6-2ici?

Gnanam
la source

Réponses:

28
  1. rpm -q --requires somepackagehere

  2. L'un est le i?86package, l'autre est le x86_64package.

Ignacio Vazquez-Abrams
la source
Mon système d'exploitation est 64 bits. Deux packages d'architecture peuvent-ils coexister sur le même serveur? Quel est le but / besoin d'avoir 2 packages d'architecture en même temps?
Gnanam
2
Les distributions dérivées de RH / Fedora prennent en charge l’ architecture multiple, grâce à laquelle plusieurs packages appartenant à des arcs "différents mais assez similaires" peuvent coexister afin de permettre l’exécution d’exécutables conçus pour l’un ou l’autre des archets.
Ignacio Vazquez-Abrams
Malheureusement, cela nécessite l'installation préalable du paquet localement: \
rogerdpack
@rogerdpack: Eh bien, oui. C'est exactement ce que la question demandait.
Ignacio Vazquez-Abrams
Ouais malheureusement, Google envoie "tout le monde ici" si vous google "liste des dépendances RPM" - Google a une portée qui a soulevé la question! Quoi qu'il en soit, voir la réponse de davey à tous les adeptes désirant cette fonctionnalité.
rogerdpack
34

La yum deplistcommande vous montrera quelles sont les dépendances de rpm , voici un exemple pour le expectpaquet (cela fonctionnera même si le paquet n'est pas encore installé localement):

# yum deplist expect
..
..
package: expect.i386 5.43.0-5.1
 dependency: libc.so.6
  provider: glibc.i686 2.5-49
  provider: glibc.i686 2.5-49
 dependency: libtcl8.4.so
  provider: tcl.i386 8.4.13-4.el5
davey
la source
Cette commande ne fonctionne pas. Est-ce que je manque quelque chose ou il manque quelque chose dans votre commande?
Gnanam
Désolé, il manque un espace, la commande est le package yum deplist.
davey
1
+1 L'utilisation de YUM est agréable, elle est récursive et résout des problèmes tels que 'perl (COnfig :: Tiny)' ou 'libc.so (64bit)'.
djhaskin987
6

Après la réponse d'Ignacio, vous pouvez voir l'architecture spécifique des packages en procédant comme suit:

$ rpm -qa --queryformat "%{NAME} %{ARCH}\n" sqlite
sqlite i686

Dans mon cas, je n'ai qu'un seul package, le package i686 ... mais vous pouvez obtenir l'architecture associée aux packages de cette manière. Si vous êtes intéressé par ce que vous pouvez obtenir de plus avec --queryformat, lancez a rpm --querytagspour voir la liste des variables disponibles.

Alex
la source
1
+1 Votre commande sur la liste par architecture est également utile.
Gnanam,
3

J'ai un extrait de shell rapide qui affiche tous les paquets installés avec leurs dépendances:

for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done
Daeon
la source
3

Les gens ont déjà répondu avec:

  1. rpm -q --requires PKG
  2. yum -q deplist PKG

Oui, rpmou yumfonctionne et répond correctement à la question. La différence principale entre rpmet yumest que yum indique également les packages que vous pouvez installer pour répondre aux exigences de la bibliothèque et / ou des fichiers. Malheureusement, si le package n'est pas installé, aucune de ces méthodes n'est utile. Comme l'affiche originale a déjà indiqué que le paquet que vous vérifiez est installé, il s'agit d'un point d'inhibition.

Et si le paquet n'était pas installé? yumpeut toujours être utilisé, mais indirectement. Vous pouvez effectuer une installation fictive en annulant l'opération d'installation.

printf n  |  yum install PKG  |  grep -- "---> Package"

Voici un exemple:

printf n  |  yum install php  |  grep -- "---> Package"
---> Package php.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-cli.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-common.x86_64 0:5.4.16-45.el7 will be installed
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed
Suave-V
la source
Solution géniale aux limitations de rapports.
MarkHu