La comanda rpm -q –whatrequires a Linux: quins paquets depenen d’un altre
La comanda rpm -q --whatrequires paquet respon a la pregunta «quins paquets instal·lats depenen d’aquest?». És la consulta que has de fer abans d’esborrar un paquet, per saber què es trencaria. És a dir, mostra les dependències inverses: no el que el paquet necessita, sinó qui el necessita a ell.
La versió anterior d’aquest post deia el contrari (que llistava el que el paquet requereix). Per a això hi ha una altra opció, rpm -qR, que també veuràs aquí.
Sintaxi
rpm -q --whatrequires capacitat L’opció pot anar abans o després del nom: rpm -q --whatrequires bash i rpm -q bash --whatrequires fan el mateix. No cal sudo.
Exemple
A Rocky Linux 9, qui depèn de la biblioteca de compressió zlib?
$ rpm -q --whatrequires zlib
no package requires zlib Sembla que ningú, però no és cert. El problema és que --whatrequires busca una capacitat (capability) concreta, i els paquets rarament depenen d’un nom de paquet: depenen de fitxers o de biblioteques. Mira què ofereix zlib:
$ rpm -q --provides zlib
libz.so.1()(64bit)
libz.so.1(ZLIB_1.2.0)(64bit)
...
zlib = 1.2.11-40.el9
zlib(aarch-64) = 1.2.11-40.el9 I pregunta per la biblioteca:
$ rpm -q --whatrequires 'libz.so.1()(64bit)'
sqlite-libs-3.34.1-9.el9_7.aarch64
libxml2-2.9.13-14.el9_7.aarch64
elfutils-libelf-0.194-1.el9.rocky.0.1.aarch64
file-libs-5.39-17.el9.aarch64
glib2-2.68.4-19.el9_8.1.aarch64
... Amb bash passa el mateix: per nom només surt un paquet, però molts scripts depenen de /bin/sh, que també el proporciona bash:
$ rpm -q --whatrequires bash
ca-certificates-2025.2.80_v9.0.305-91.el9.noarch
$ rpm -q --whatrequires /bin/sh
glibc-common-2.34-266.el9_8.aarch64
p11-kit-trust-0.26.2-1.el9.aarch64
glib2-2.68.4-19.el9_8.1.aarch64
krb5-libs-1.21.1-10.el9_8.aarch64
... Si un paquet surt dues vegades és perquè té més d’una dependència que coincideix.
La manera fàcil: dnf repoquery
dnf fa aquesta feina per tu: busca tots els paquets que depenen de qualsevol cosa que ofereixi el paquet (nom, fitxers, biblioteques):
$ dnf repoquery --installed --whatrequires zlib
binutils-0:2.35.2-72.el9.aarch64
binutils-gold-0:2.35.2-72.el9.aarch64
cracklib-0:2.9.6-28.el9.aarch64
elfutils-libelf-0:0.194-1.el9.rocky.0.1.aarch64
... Sense --installed, et diu també quins paquets dels repositoris en dependrien.
I la manera més pràctica de saber què passaria si l’esborres: dnf remove mostra la llista de tot el que s’emportaria, i amb --assumeno respon «no» automàticament, de manera que no esborra res:
sudo dnf remove --assumeno paquet Amb paquets bàsics com zlib, dnf directament s’hi nega, perquè esborrar-lo implicaria esborrar el mateix dnf.
Les consultes relacionades
| Consulta | Què respon |
|---|---|
rpm -qR paquet | Què necessita aquest paquet (les seves dependències) |
rpm -q --provides paquet | Quines capacitats ofereix aquest paquet |
rpm -q --whatrequires capacitat | Quins paquets instal·lats necessiten aquesta capacitat |
rpm -q --whatprovides capacitat | Quin paquet instal·lat ofereix aquesta capacitat |
Per exemple, quin paquet ofereix /bin/sh i quines dependències té zlib:
$ rpm -q --whatprovides /bin/sh
bash-5.1.8-9.el9.aarch64
$ rpm -qR zlib
ld-linux-aarch64.so.1()(64bit)
libc.so.6()(64bit)
...
rpmlib(PayloadIsZstd) <= 5.4.18-1 Les línies rpmlib(...) no són paquets: són funcions que ha de tenir la versió de rpm que l’instal·li.
I a Debian o Ubuntu?
L’equivalent és apt rdepends paquet (dependències inverses) i apt depends paquet (dependències directes). Vegeu la comanda apt.
Comandes relacionades
- Consultar paquets amb rpm: totes les consultes de
rpm -q. - La comanda rpm: instal·lar, esborrar i verificar paquets.
rpm -qa | grep httpd: saber si un paquet és instal·lat.yumidnf: el gestor de paquets que resol les dependències.
Esta web usa cookies.