Liste des packages dans Yum qui dépendent d'un autre package installé

J'essaye d'installer un package RPM tiers sur RHEL5 qui dépend de la version 3.4 de sqlite. Selon Yum j'ai déjà installé 3.3.6.

Existe-t-il un moyen de répertorier les packages installés qui dépendent de sqlite 3.3.6?

L'option rpm que vous voulez est:

rpm -q --whatrequires sqlite 

Répondre

 repoquery -q --installed --whatrequires sqlite 

Explications

rpm -q --whatrequires sqlite ne rapporte que des dependencies sur les noms des packages.

Au contraire, le repoquery agit comme suit (à partir de pages de manuel):

  --alldeps When used with --whatrequires, look for non-explicit dependencies in addition to explicit ones (eg files and Provides in addition to package names). This is the default. 

Exemple

Prenons le package libdb .

 # rpm -q --whatrequires libdb no package requires libdb 

Aucun package ne dépend de libdb , nous devrions donc pouvoir le supprimer en douceur. Toutefois…

 # yum remove -y libdb Loaded plugins: fastestmirror Resolving Dependencies --> Running transaction check ---> Package libdb.x86_64 0:5.3.21-19.el7 will be erased --> Processing Dependency: libdb(x86-64) = 5.3.21-19.el7 for package: libdb-utils-5.3.21-19.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: pam-1.1.8-12.el7_1.1.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-4.11.3-17.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-libs-4.11.3-17.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: libdb-utils-5.3.21-19.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: cyrus-sasl-lib-2.1.26-20.el7_2.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-python-4.11.3-17.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: python-libs-2.7.5-39.el7_2.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-devel-4.11.3-17.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: 2:postfix-2.10.1-6.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: rpm-build-libs-4.11.3-17.el7.x86_64 --> Processing Dependency: libdb-5.3.so()(64bit) for package: iproute-3.10.0-54.el7_2.1.x86_64 --> Running transaction check . . . . . . . . . Error: Trying to remove "systemd", which is protected Error: Trying to remove "yum", which is protected 

Comme vous pouvez le voir, d'autres packages ne dépendaient pas directement du packageage, mais sur le file libdb-5.3.so()(64bit) fourni par celui-ci.

Enfin, voici la list réelle des packages en fonction de libdb :

 # repoquery -q --installed --whatrequires libdb cyrus-sasl-lib-0:2.1.26-20.el7_2.x86_64 iproute-0:3.10.0-54.el7_2.1.x86_64 libdb-utils-0:5.3.21-19.el7.x86_64 pam-0:1.1.8-12.el7_1.1.x86_64 postfix-2:2.10.1-6.el7.x86_64 python-libs-0:2.7.5-39.el7_2.x86_64 rpm-0:4.11.3-17.el7.x86_64 rpm-build-libs-0:4.11.3-17.el7.x86_64 rpm-devel-0:4.11.3-17.el7.x86_64 rpm-libs-0:4.11.3-17.el7.x86_64 rpm-python-0:4.11.3-17.el7.x86_64 

Vous pouvez également essayer cette command.

 repoquery --whatrequires sqlite 

J'ai reçu cette command de ServerFault et aussi de The Fedora Forums.

Pour dnf (nouvelle version de yum), vous pouvez essayer avec la command wrapper repoquery:

 dnf repoquery --whatrequires sqlite 

S'il n'est pas disponible, vous pouvez l'installer avec la command:

 dnf -y install dnf-plugins-core 

Je pense que ce que vous voulez vraiment savoir est "quels sont les packages qui requièrent sqlite-3.3.6, mais ne seront pas contents avec sqlite-3.4.z" … et la seule bonne façon de le find, c'est de essayez-le. Comme:

 echo | yum upgrade sqlite