Réponses:
L'option rpm que vous voulez est:
rpm -q --whatrequires sqlite
Édité: ajouté - installé par discussion dans d'autres réponses / commentaires
Édité: supprimé - installé car il s'agit d'une option non valide pour rpm
--installedest une option pour repoquerymais n'est pas valide pour rpm.
repoquery -q --installed --whatrequires sqlite
rpm -q --whatrequires sqlite rapporte uniquement les dépendances sur les noms de paquets.
Au contraire, repoqueryagit comme suit (à partir des pages de manuel):
--alldeps
When used with --whatrequires, look for non-explicit dependencies in addition to explicit ones (e.g. files and Provides in addition to package names).
This is the default.
Prenons le paquet libdb.
# rpm -q --whatrequires libdb
no package requires libdb
Aucun paquet ne dépend libdb, nous devrions donc pouvoir le retirer en douceur. Pourtant...
# 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 constater, certains autres paquets ne dépendaient pas directement du paquet, mais du fichier libdb-5.3.so()(64bit)fourni par celui-ci.
Enfin, voici la liste réelle des paquets 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
Pour dnf (nouvelle version de yum), essayez avec la commande de wrapper de repoquerie:
dnf repoquery --whatrequires sqlite
S'il n'est pas disponible, vous pouvez l'installer avec la commande suivante:
dnf -y install dnf-plugins-core
--installed --recursivede la fin pour qu'elle ne retourne que ce qui est réellement installé et qu'elle ne soit pas extraite des référentiels
Vous pouvez également essayer cette commande.
repoquery --whatrequires sqlite
J'ai reçu cette commande de ServerFault et également de The Fedora Forums.
Je pense que ce que vous voulez vraiment savoir, c’est "quels sont les paquets qui nécessitent sqlite-3.3.6, mais ne seront pas satisfaits de sqlite-3.4.z" ... et le seul bon moyen de le savoir est de: l'essayer Comme:
echo | yum upgrade sqlite
Comme l'a dit Wes Hardaker , une bonne méthode intégrée consiste à utiliser rpm -q --whatrequires <package>. Le fait est que cela rpmfonctionne sur les capacités de résolution des dépendances, pas simplement sur les paquets, comme c'est le dpkgcas par exemple dans la famille de distributions Linux Debian / Ubuntu. Comme d'autres l'ont noté, le simple fait de rpm -q --whatrequires sqliteraconter ne raconte pas toute l'histoire, raison pour laquelle certains ont suggéré d'utiliser repoquery. repoqueryCependant, RHEL / CentOS 7 n’est pas installé par défaut (peut-être aussi sur le bureau?), de sorte qu’il n’est peut-être pas disponible pour tout le monde.
Un utilisateur peut rpm -q --provides <pkgname>afficher toutes les fonctionnalités fournies par un package, puis utiliser rpm -q --whatrequires <capability>pour déterminer les packages installés qui en ont besoin. Cette information peut être interrogée de manière succincte à l'aide d'une ligne simple BASH (séparée ici en deux lignes):
capabilities=($(rpm -q --provides sqlite | awk -F= '{print $1}'));
for c in "${capabilities[@]}"; do rpm -q --whatrequires "$c"; done
Cela utilise uniquement les options intégrées à rpmlui-même et ne nécessite donc pas l'installation de packages supplémentaires (par exemple yum-utilsdans CentOS 7, qui contient le package repoquery).
repoquerypeut être utilisé pour générer une belle arborescence ressemblant à la structure de tous les paquets nécessitant un paquet particulier, par exemple:repoquery --pkgnarrow=installed --tree-whatrequires sqlite