La línia rpm -qa | grep httpd és la manera clàssica de saber si l’Apache (que a Red Hat, Rocky Linux, AlmaLinux i Fedora es diu httpd) està instal·lat, i quins paquets relacionats hi ha. Funciona igual per a qualsevol altre programa: només cal canviar la paraula que busques.
Què fa cada peça
| Peça | Què fa | |
|---|---|---|
rpm -qa | Query all: llista tots els paquets instal·lats, un per línia, amb nom, versió, revisió i arquitectura | |
| `\ | ` | La canonada: passa la sortida de rpm a l’entrada de la comanda següent |
grep httpd | Es queda només amb les línies que contenen el text httpd |
Exemple
En un Rocky Linux 9 amb l’Apache instal·lat:
$ rpm -qa | grep httpd
httpd-filesystem-2.4.62-13.el9_8.6.noarch
httpd-tools-2.4.62-13.el9_8.6.aarch64
rocky-logos-httpd-90.17-1.el9.noarch
httpd-core-2.4.62-13.el9_8.6.aarch64
httpd-2.4.62-13.el9_8.6.aarch64
Fixa’t en dues coses:
grepbusca el text en qualsevol part del nom: per això surtrocky-logos-httpd, que no és l’Apache sinó les imatges de la pàgina de benvinguda.- En canvi, no surt
mod_ssl, tot i que és un mòdul de l’Apache, perquè el seu nom no contéhttpd. Aquesta comanda troba noms, no relacions entre paquets.
Si no surt res, no hi ha cap paquet instal·lat amb aquest text al nom.
Maneres més precises de fer-ho
Preguntar directament per un paquet. Si saps el nom exacte, no cal llistar-los tots:
$ rpm -q httpd
httpd-2.4.62-13.el9_8.6.aarch64
$ rpm -q nginx
package nginx is not installed
A més, rpm -q torna el codi de sortida 0 si el paquet hi és i 1 si no, cosa que el fa ideal per a scripts:
if rpm -q httpd >/dev/null; then
echo "L'Apache és instal·lat"
fi
Fer servir un patró de rpm en lloc de grep. rpm -qa accepta comodins, que s’apliquen al principi del nom (posa’l entre cometes perquè el shell no l’expandeixi):
$ rpm -qa 'httpd*'
httpd-filesystem-2.4.62-13.el9_8.6.noarch
httpd-tools-2.4.62-13.el9_8.6.aarch64
httpd-core-2.4.62-13.el9_8.6.aarch64
httpd-2.4.62-13.el9_8.6.aarch64
Cercar sense distingir majúscules, per si no saps com s’escriu el nom:
rpm -qa | grep -i ssl
Veure-ho amb dnf, que també t’indica de quin repositori ve cada paquet:
$ dnf list --installed 'openssl*'
Installed Packages
openssl.aarch64 1:3.5.5-2.el9_8 @baseos
openssl-fips-provider.aarch64 1:3.5.5-2.el9_8 @baseos
openssl-libs.aarch64 1:3.5.5-2.el9_8 @baseos
Saber quan s’ha instal·lat, combinant-ho amb --last:
rpm -qa --last | grep httpd
I a Debian o Ubuntu?
L’Apache s’hi diu apache2 i la consulta equivalent es fa amb dpkg:
dpkg -l | grep apache2
O, més precís, dpkg -s apache2 (vegeu la comanda dpkg).
Comandes relacionades
- La comanda rpm: instal·lar, actualitzar, esborrar i verificar paquets.
- Consultar paquets amb rpm: totes les consultes (
-qi,-ql,-qf,--qf…). rpm -q --whatrequires: quins paquets depenen d’un altre.grep: cercar i filtrar text.yumidnf: el gestor de paquets d’alt nivell.