Utilizzo di RPM

RPM ha cinque modalità di funzionamento: installazione, disinstallazione, aggiornamento, interrogazione e verifica. Questa sezione contiene una panoramica di ogni modalità. Per maggiori dettagli e opzioni, digitate il comando rpm --help o consultate la la sezione Risorse aggiuntive.

Ricerca degli RPM

Prima di usare un RPM, dovete sapere dove cercarlo. Su Internet troverete molti RPM diversi, ma se state cercando i pacchetti RPM di Red Hat, consultate ciò che segue:

Installazione

Solitamente i nomi dei file dei pacchetti RPM sono simili a foo-1.0-1.i386.rpm. Il nome del file include il nome del pacchetto (foo), la versione (1.0), la release (1) e l'architettura (i386). Per installare un pacchetto basta digitare al prompt della shell il comando seguente:

# rpm -ivh foo-1.0-1.i386.rpm
foo                       ####################################
#

Come potete vedere, RPM stampa il nome del pacchetto e poi una serie di riferimenti che servono per seguire l'installazione del pacchetto.

NotaNota Bene
 

Sebbene rpm -ivh foo-1.0-1.i386.rpm sia il comando che solitamente viene usato per installare un pacchetto RPM, potete usare anche rpm -Uvh foo-1.0-1.i386.rpm. -U è solitamente usato per gli aggiornamenti, ma può anche essere usato per installare nuovi pacchetti. Per maggiori informazioni sull'utilizzo dell'opzione -U di RPM, consultate la la sezione Aggiornamento .

L'installazione dei pacchetti è un'operazione semplice, ma vi può capitare di trovare errori quali:

Pacchetti già installati

Se sul sistema è già installata la stessa versione di pacchetto, compare il messaggio seguente:

# rpm -ivh foo-1.0-1.i386.rpm
foo                     package foo-1.0-1 is already installed
#

Se volete installare ugualmente il pacchetto e la stessa versione è già presente sul sistema, usate l'opzione --replacepkgs che indica a RPM di ignorare l'errore:

# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
foo                       ####################################
#

L'opzione è utile se sono stati cancellati dei file RPM oppure se volete installare i file di configurazione originali di RPM.

File in conflitto

Se provate a installare un pacchetto contenente un file che è già stato installato da un altro pacchetto o da una versione precedente dello stesso pacchetto, compare a video il messaggio seguente:

# rpm -ivh foo-1.0-1.i386.rpm
foo           /usr/bin/foo conflicts with file from bar-1.0-1
#

Perché RPM ignori questo errore, usate l'opzione --replacefiles:

# rpm -ivh --replacefiles foo-1.0-1.i386.rpm
foo                       ####################################
#

Dipendenze non risolte

I pacchetti RPM possono "dipendere" da altri pacchetti, il che significa che la loro installazione necessita di altri pacchetti. Se provate a installare un pacchetto che ha delle dipendenze non risolte, compare a video il messaggio seguente:

# rpm -ivh foo-1.0-1.i386.rpm
failed dependencies:
        bar is needed by foo-1.0-1
#

Per risolvere il problema, installate i pacchetti richiesti. Se volete procedere all'installazione senza risolvere il problema (sconsigliabile visto che probabilmente il pacchetto non funzionerà correttamente), usate l'opzione --nodeps.

Rimozione dell'installazione

L'operazione di rimozione è semplice quanto quella di installazione. Al prompt della shell digitate il comando seguente:

# rpm -e foo
#

NotaNota Bene
 

Abbiamo usato il nome di pacchetto foo, non quello del file originale foo-1.0-1.i386.rpm. Per disinstallare un pacchetto, sostituite foo con il nome del pacchetto di origine.

Potete incontrare un errore di dipendenza durante la rimozione di un pacchetto se un altro pacchetto installato dipende da quello che state cercando di rimuovere. Per esempio:

# rpm -e foo
removing these packages would break dependencies:
        foo is needed by bar-1.0-1
#

Perché RPM ignori questo errore e disinstalli il pacchetto (anche questa operazione è sconsigliabile poiché il pacchetto che dipende da esso non potrà funzionare correttamente), usate l'opzione --nodeps.

Aggiornamento

L'operazione di aggiornamento è simile a quella di installazione:

# rpm -Uvh foo-2.0-1.i386.rpm
foo                       ####################################
#

Ciò che non vedete sopra è che RPM ha automaticamente disinstallato tutte le versioni precedenti del pacchetto foo. Vi consigliamo di usare sempre il comando -U per installare i pacchetti, poiché funziona anche quando non ci sono versioni precedenti del pacchetto installato.

Dato che RPM esegue un aggiornamento intelligente dei pacchetti con i file di configurazione, può comparire a video un messaggio simile a:

saving /etc/foo.conf as /etc/foo.conf.rpmsave

Il messaggio indica che le modifiche apportate al file di configurazione possono non essere "forward compatible" con il nuovo file di configurazione del pacchetto, perciò RPM ha salvato il vostro file originale e ne ha installato uno nuovo. Dovete cercare le differenza fra i due file di configurazione e risolverle appena possibile cosicché il sistema continui a funzionare correttamente.

L'aggiornamento è una combinazione dell'installazione e della rimozione dell'installazione perciò, durante un aggiornamento di RPM, potete trovare errori di installazione e di disinstallazione più un altro errore. Se RPM crede che state cercando di aggiornare un pacchetto con una versione precedente, compare a video il messaggio seguente:

# rpm -Uvh foo-1.0-1.i386.rpm
foo    package foo-2.0-1 (which is newer) is already installed
#

Perché RPM si aggiorni ugualmente, usate l'opzione --oldpackage:

# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
foo                       ####################################
#

Refresh

L'operazione di refresh è simile all'operazione di aggiornamento. Al prompt della shell digitate il comando seguente:

# rpm -Fvh foo-1.2-1.i386.rpm
foo                       ####################################
#

L'opzione di refresh di RPM controlla le versioni dei pacchetti specificati nella linea di comando e quelli già installati sul sistema. Quando una versione di un pacchetto già installato viene elaborata dall'opzione di refresh, il pacchetto viene aggiornato alla nuova versione. Tuttavia, l'opzione di refresh di RPM non installa un pacchetto se sul sistema non è presente alcuna versione precedente di questo pacchetto. Questa è ciò che differenzia l'opzione di refresh dall'opzione di aggiornamento. Infatti l'operazione di aggiornamento installa pacchetti, sia che sul sistema siano o non siano presenti versioni precedenti dei pacchetti.

L'opzione di refresh di RPM funziona sia per singoli pacchetti che per gruppi di pacchetti. Se avete appena scaricato numerosi pacchetti diversi e volete aggiornare i pacchetti presenti sul sistema, scegliete l'opzione di refresh. Con quest'opzione, prima di usare RPM non dovete rimuovere i pacchetti non desiderati dal gruppo scaricato.

Digitate il comando seguente:

# rpm -Fvh *.rpm

RPM aggiorna automaticamente solo i pacchetti che sono già installati.

Interrogazione

Usate il comando rpm -q per interrogare il database dei pacchetti installati. Il comando rpm -q foo stampa il nome, la versione e la release del pacchetto foo installato:

# rpm -q foo
foo-2.0-1
#

NotaNota Bene
 

Abbiamo usato il nome di pacchetto foo. Per interrogare un pacchetto, sostituite foo con il nome del pacchetto da interrogare.

Anziché specificare il nome del pacchetto, potete usare le seguenti opzioni con -q per specificare i pacchetti che volete interrogare. Queste sono chiamate Opzioni di specifica del pacchetto.

Ci sono molti modi per specificare quali informazioni devono essere visualizzate sul pacchetto interrogato. Le opzioni seguenti vengono usate per selezionare le informazioni che state cercando. Queste sono chiamate Opzioni di selezione delle informazioni.

Per le opzioni che visualizzano elenchi di file, potete aggiungere -v al comando perché la visualizzazione degli elenchi sia simile a quella del comando ls -l.

Verifica

Il processo di verifica di un pacchetto confronta le informazioni dei file installati da un pacchetto con le informazioni del pacchetto originale. Tra le altre cose, la verifica confronta le dimensioni, MD5, i permessi, il tipo, il proprietario e il gruppo di ogni file.

rpm -V verifica un pacchetto. Potete usare una lista qualsiasi di opzioni di selezione dei pacchetti per interrogare i pacchetti specifici che volete verificare. Un uso semplice è rpm -V foo che verifica che tutti i file nel pacchetto foo siano identici a quelli installati originariamente. Per esempio:

Se tutto è verificato correttamente non compare alcun output. Se ci sono alcune discrepanze, queste vengono visualizzate. Il formato dell'output è una stringa di 8 caratteri, una possibile "c" denota un file di configurazione, e poi il nome del file. Ogni singolo carattere è il risultato di una comparazione di un attributo del file con il valore dell'attributo in memoria nel database RPM. Un singolo "." (periodo) significa che il test è risultato corretto. I seguenti caratteri indicano errori in alcuni test:

Se vedete un output, usate il vostro intuito per determinare se è necessario rimuovere o reinstallare il pacchetto oppure risolvere il problema in qualche altro modo.