Come per APT, il sistema di gestione dei pacchetti in Debian, facciamo una brevissima panoramica sull’utilizzo degli analoghi strumenti di gestione del software per le distribuzioni basate su Red Hat. In questo post vediamo come utilizzare il comando rpm, che sta per RedHat Package Manager. Questo è lo strumento che si usa per installare pacchetti .rpm già presenti in locale, ad esempio scaricati sul disco, e per interrogare e verificare lo stato dei pacchetti già installati. In sostanza è l’equivalente di dpkg per Debian. Il comando accetta una grande quantità di opzioni, ma io mi limiterò a descrivere quelle più comuni.
Le azioni che si possono eseguire col comando rpm rientrano in tre “gruppi” distinti:
- installazione/aggiornamento/rimozione (opzioni -i, -U, -e)
- interrogazione (opzione -q)
- verifica (opzione -V)
A ciascuna azione possono essere affiancate opportune opzioni che ne modificano o specificano il comportamento.
Installazione/aggiornamento/rimozione di un pacchetto
Supponiamo di voler installare sul nostro sistema il pacchetto bind, cioè il nameserver per il DNS. Per prima cosa dobbiamo procurarci il corrispondente pacchetto .rpm, scaricandolo sul nostro filesystem col metodo che riteniamo più opportuno. Ovviamente dobbiamo sempre assicurarci di prelevare i pacchetti da sorgenti affidabili, come ad esempio il repository ufficiale della nostra distribuzione. Supponiamo che il pacchetto in questione si chiami bind-9.3.6-16.P1-el5_7.1.rpm e di averlo scaricato nella directory corrente. L’installazione si esegue col seguente comando:
[cc lang=’bash’ line_numbers=’false’]rpm -i bind-9.3.6-16.P1-el5_7.1.rpm[/cc]
All’azione di installazione possiamo aggiungere qualche utile opzione, come ad esempio -v e -h che aumentano la verbosità dell’output (-v) e mostrano una barra di progressione dell’operazione (-h):
[cc lang=’bash’ line_numbers=’false’]rpm -ivh bind-9.3.6-16.P1-el5_7.1.rpm[/cc]
Come si può notare, l’azione di installazione richiede come argomento il nome completo del file .rpm.
Per rimuovere un pacchetto installato sul sistema è sufficiente utilizzare l’opzione -e, stavolta senza specificare il nome completo del pacchetto ma soltanto il nome base:
[cc lang=’bash’ line_numbers=’false’]rpm -e bind[/cc]
Se vogliamo aggiornare il pacchetto bind a una versione più recente, possiamo farlo senza la necessità di rimuovere prima la versione correntemente installata. Per questo si usa l’azione -U, alla quale possiamo passare le stesse opzioni usate per l’installazione. Se sul sistema non è già installato il pacchetto bind, l’aggiornamento si comporta esattamente come un’installazione ex novo.
[cc lang=’bash’ line_numbers=’false’]rpm -Uvh bind-9.7.3-2.P1-el5_7.1.rpm[/cc]
Interrogazione dello stato dei pacchetti
Se vogliamo avere informazioni circa lo stato dei pacchetti installati sul nostro sistema, rpm prevede delle azioni di ‘query’ specificate mediante l’opzione -q. Se ad esempio vogliamo osservare lo stato del pacchetto bind, possiamo eseguire il comando:
[cc lang=’bash’ line_numbers=’false’]rpm -q bind[/cc]
Il comando risponde con la versione di bind attualmente installata, oppure con un messaggio che ci segnala che il pacchetto bind non è installato. Poiché l’azione di query richiede il nome esatto del pacchetto, spesso è preferibile usarla insieme all’opzione -a, filtrando poi l’output in base al nome, anche approssimativo, del pacchetto che stiamo cercando:
[cc lang=’bash’ line_numbers=’false’]rpm -qa | grep -i bind[/cc]
L’opzione -a provoca l’interrogazione di tutti i pacchetti installati sul sistema. Se vogliamo avere informazioni specifiche sul pacchetto, possiamo aggiungere l’opzione -i:
[cc lang=’bash’ line_numbers=’false’]rpm -qi bind[/cc]
che restituisce un output del genere:
[root@centos5 ~]# rpm -qi bind
Name : bind Relocations: (not relocatable)
Version : 9.3.6 Vendor: CentOS
Release : 16.P1.el5_7.1 Build Date: gio 17 nov 2011 23:22:54 CET
Install Date: mar 14 feb 2012 10:53:27 CET Build Host: builder10.centos.org
Group : System Environment/Daemons Source RPM: bind-9.3.6-16.P1.el5_7.1.src.rpm
Size : 2247585 License: BSD-like
Signature : DSA/SHA1, ven 18 nov 2011 14:22:21 CET, Key ID a8a447dce8562897
URL : http://www.isc.org/products/BIND/
Summary : Il server Berkeley Internet Name Domain (BIND) DNS (Domain name system).
Description :
BIND (Berkeley Internet Name Domain) risulta essere una implementazione dei
protocolli DNS (Domain Name System). BIND include un server DNS (named),
il quale risolve gli host name in indirizzi IP, una libreria resolver
(routine per applicazioni da utilizzare quando si interfaccia con DNS); e
dei tool per la verifica sul funzionamento corretto del server DNS.
E’ possibile anche ricavare informazioni sui file di configurazione installati dal pacchetto (opzione -c), sui file di documentazione (opzione -d) o su tutti i file installati dal pacchetto (opzione -l). Vediamo solo l’esempio relativo ai file di configurazione:
[cc lang=’bash’ line_numbers=’false’]rpm -qc bind[/cc]
L’output restituisce il seguente elenco di file:
[root@centos5 ~]# rpm -qc bind
/etc/dbus-1/system.d/named.conf
/etc/logrotate.d/named
/etc/named.conf
/etc/rc.d/init.d/named
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/usr/share/dbus-1/services/named.service
Verifica dello stato dei pacchetti
L’ultimo gruppo di azioni rimasto è quello di verifica dello stato dei pacchetti, che consente di osservare eventuali modifiche o differenze tra le caratteristiche dei file installati da un pacchetto e le corrispondenti caratteristiche indicate nel database rpm. Tra le caratteristiche ci sono, ad esempio, i permessi sui file, il nome utente e il gruppo cui i file appartengono, la somma MD5, e così via. Un semplice esempio di utilizzo di queste opzioni è il seguente:
[cc lang=’bash’ line_numbers=’false’]rpm -V bind[/cc]
Il comando restituisce un output solo se vengono rilevate anomalie o modifiche delle caratteristiche rispetto a quelle memorizzate nel database rpm. E’ possibile raffinare la verifica specificando le opportune opzioni.
Come anticipato, il comando rpm prevede una enorme quantità di opzioni, pertanto lo strumento migliore per documentarsi in merito resta come sempre la man page, alla quale vi rimando.
Prossimamente scriverò un post in cui descriverò l’utilizzo del comando yum, praticamente il corrispondente Red Hat per apt-get.