Come elencare i pacchetti RPM installati su Linux
I comandi rpm sono utilizzati da distribuzioni basate su rpm come CentOS, Fedora, Opensuse e RHEL. Le moderne distribuzioni Linux usano yum e il gestore di pacchetti DNF, che ha più funzionalità.
Questo tutorial spiega le opzioni che possono essere aggiunte al comando rpm (Redhat Package Manager) per elencare i pacchetti in Linux.
1) Elenca tutti i pacchetti installati
Per interrogare l’intero database RPM, useremo -qa
opzione (query all) per elencare tutti i pacchetti installati in Linux.
# sudo rpm -qa
Output
grub2-tools-extra-2.02-0.65.el7.centos.2.x86_64
ncurses-base-5.9-14.20130511.el7_4.noarch
libpipeline-1.2.3-3.el7.x86_64
kbd-misc-1.15.5-13.el7.noarch
tuned-2.9.0-1.el7.noarch
bash-4.2.46-30.el7.x86_64
info-5.1-5.el7.x86_64
...
2) Elenca il pacchetto specifico installato
Puoi filtrare rpm -qa
risultati utilizzando il comando grep per elencare il pacchetto specifico.
Il seguente comando elencherà i pacchetti specifici relativi a “ssh”.
# rpm -qa | grep ssh
sample output
openssh-clients-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
libssh2-1.4.3-10.el7_2.1.x86_64
Utilizzare il seguente comando per trovare la data di installazione per un pacchetto specifico
# rpm -q --last openssh
openssh-5.3p1-118.1.el6_8.x86_64 Wed 01 Mar 2017 08:30:12 PM UTC
3) Elenca informazioni dettagliate su un pacchetto
Per elencare informazioni dettagliate sul pacchetto, come versione, rilascio, dimensioni, data di installazione e firma, utilizzare l’opzione qi. Ad esempio, controlliamo le informazioni dettagliate del pacchetto “openssh”.
# rpm -qi openssh

4) Elenca il pacchetto installato interrogando un file
Abbiamo installato ssh
da openssh-server-5.3p1-84.1.el6.x86_64
lotto. Possiamo usare -qf
(query file) con il comando rpm su un file di configurazione.
L’esempio seguente elencherà il nome del pacchetto collegato al file (‘/etc/ssh/sshd_config’) menzionato nel comando:
# rpm -qf /etc/ssh/sshd_config
output
openssh-server-7.4p1-16.el7.x86_64
5) Mostra tutti i file installati da un pacchetto
Noi useremo -ql
opzione con il comando rpm per elencare tutti i file di questo pacchetto installati sul sistema.
# rpm -ql openssh-server-7.4p1-16.el7.x86_64
output
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
/usr/lib/systemd/system/sshd-keygen.service
/usr/lib/systemd/system/sshd.service
/usr/lib/systemd/system/sshd.socket
/usr/lib/systemd/system/sshd@.service
/usr/lib64/fipscheck/sshd.hmac
/usr/libexec/openssh/sftp-server
/usr/sbin/sshd
/usr/sbin/sshd-keygen
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
/var/empty/sshd
6) Elenca solo i file di configurazione del pacchetto
Noi useremo -qc
opzione con rpm
comando per visualizzare il file di configurazione relativo al pacchetto.
# rpm -qc openssh-server-7.4p1-16.el7.x86_64
output
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
7) Elenca solo i file di documentazione del pacchetto
Noi useremo -qd
opzione (interroga documentazione) con rpm
comando per elencare solo i file di documentazione.
# rpm -qd openssh-server-7.4p1-16.el7.x86_64
output
/usr/share/man/man5/moduli.5.gz
/usr/share/man/man5/sshd_config.5.gz
/usr/share/man/man8/sftp-server.8.gz
/usr/share/man/man8/sshd.8.gz
8) Contare il numero totale di pacchetti installati
In Linux, possiamo usare il comando wc per contare, quindi possiamo distribuire il comando rpm query per ottenere il numero totale di pacchetti installati.
# rpm -qa | wc -l
222
Se stai usando il gestore di pacchetti yum o dnf, usa il seguente comando:
# yum list installed | wc -l
# dnf list installed | wc -l
# repoquery -a --installed | wc -l
9) Elenca tutti i pacchetti installati usando il comando repoquery
Nella nuova versione di CentOS, RHEL e Fedora, supporta l’utilizzo del comando repoquery per elencare tutti i pacchetti installati. Se stai usando il gestore di pacchetti dnf, installa “dnf-utils” e per il gestore di pacchetti yum installa “yum-utils” per usare repoquery.
# dnf install dnf-utils
# yum install yum-utils
Eseguire il seguente comando per elencare tutti i pacchetti installati utilizzando il comando repoquery:
# repoquery -a --installed
10) Elenca i pacchetti installati da un determinato repository
Puoi elencare i pacchetti installati da un repository specifico, come il repository EPEL su distribuzioni RHEL o CentOS 7 o CentOS 8.
Il seguente comando elenca tutti i pacchetti installati dal repository “EPEL”:
# yum list installed | grep @epel
Yumdb è un altro comando disponibile per elencare i pacchetti installati da un particolare repository. Yumdb viene fornito con il pacchetto “yum-utils”, quindi assicurati di installarlo.
Il seguente comando yumdb elencherà tutti i pacchetti installati dal repository “EPEL”:
# yumdb search from_repo epel
11) Come ripristinare il file di configurazione dal pacchetto RPM
Se per qualche motivo un file è stato danneggiato o eliminato dal sistema, possiamo iniziare con rpm -qf
opzione query per scoprire da quale pacchetto proviene il file. Prossimo utilizzo rpm2cpio | cpio -idmv
per estrarre i file dal pacchetto. Considera l’esempio ssh:
Supponendo che /etc/ssh/sshd_config
il file è stato eliminato e potremmo non voler reinstallare ssh, quindi ripristineremo il file seguendo i passaggi seguenti.
- Il comando seguente mostra che il file proviene dal pacchetto openssh-server-7.4p1-16.el7.x86_64.
# rpm -qf /etc/init.d/sshd
- Scarica Openssh rpm dalla sua fonte
- copia
openssh-server-7.4p1-16.el7.x86_64
file del pacchetto in/tmp
directory o qualsiasi altra directory di tua scelta. - Uso
rpm2cpio | cpio -idmv
per estrarre il pacchetto.
I comandi che abbiamo utilizzato nei passaggi precedenti hanno creato alcune sottodirectory nel file /tmp
. Ora possiamo copiarlo nella sua posizione originale.
Conclusione
In questo tutorial abbiamo imparato diversi modi per elencare i pacchetti rpm installati in Linux. Spero che ti sia piaciuto leggere e per favore lascia i tuoi suggerimenti nella sezione commenti qui sotto.