Usare RPM

RPM ha cinque modalità di funzionamento: Installazione, Disinstallazione, Aggiornamento, Query e Verifica. Questo paragrafo presenta una spiegazione d'uso per ognuna di esse. Per visualizzare tutti i dettagli e le opzioni, digitate rpm --help, o leggete la la sezione Altre Risorse di RPM per ottenere maggiori informazioni su RPM.

Installazione

I pacchetti RPM hanno un nome del file composto dal nome del pacchetto dal nome del pacchetto (foo), dalla versione (1.0), dalla release (1) e dall'architettura del sistema(i386) come ad esempio foo-1.0-1.i386.rpm. Installare un pacchetto è semplice come:

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

Come potete vedere, RPM mostra il nome del pacchetto seguito da una serie di dati che indicano la versione, l'architettura, ...,

NotaNota Bene
 

Sebbene l'uso del comando rpm -ivh foo-1.0-1.i386.rpm risulti comodo per l'installazione potete usare anche rpm -Uvh foo-1.0-1.i386.rpm. L'opzione -U viene utilizzata per aggiornare i pacchetti, ma installa anche i pacchetti nuovi. Si veda la la sezione Aggiornamento per maggiori informazioni nell'utilizzo dell'opzione -U.

L'installazione di un pacchetto è un'operazione semplice, nonostante ciò potreste avere qualche errore:

Pacchetto già installato

Se il pacchetto è già installato, appare il seguente messaggio:

# rpm -ivh foo-1.0-1.i386.rpm
foo                     package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
#
          

Se volete installare ugualmente il pacchetto, potete usare il l'opzione --replacepkgs sulla linea di comando indicando al programma RPM di ignorare l'errore:

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

File in conflitto

Se provate ad installare un pacchetto che contiene un file che è già stato installato da un altro pacchetto, vedrete:

# rpm -ivh foo-1.0-1.i386.rpm
foo           /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
#
	      

Affinchè il programma RPM ignori questo errore, inserite --replacefiles alla linea di comando:

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

Dipendenze irrisolte

I pacchetti RPM possono "dipendere" da altri pacchetti, il che significa che alcuni pacchetti siano già installati per funzionare correttamente. Se provate ad installare un pacchetto per il quale risulta una dipendenza irrisolta, verrà visualizzato il seguente messaggio:

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

Per gestire questo errore dovreste installare il pacchetto richiesto. Se volete forzare comunque l'installazione (una cattiva idea poichè probabilmente il pacchetto non funzionerà correttamente), inserite --nodeps alla linea di comando.

Disinstallazione

Disinstallare un pacchetto è semplice come installarlo:

# rpm -e foo
#
	    

NotaNota Bene
 

Fate attenzione al fatto che abbiamo usato il pacchetto name "foo" e non il nome del pacchetto originale file "foo-1.0-1.i386.rpm".

Potreste trovare un errore di dipendenza quando disinstallate un pacchetto se qualche altro pacchetto installato dipende da quello che state provando a disinstallare. Per esempio:

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

Per fare in modo che RPM ignori l'errore e disinstalli comunque il pacchetto (che non è una buona idea in quanto il pacchetto che dipende da questo non riuscirà a funzionare correttamente) inserite --nodeps alla linea di comando.

Aggiornamento

Aggiornare un pacchetto è come installarlo.

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

Quello che non vedete qui sopra è che RPM automaticamente disinstalla la precedente versione del pacchetto foo. Potreste volere usare il comando -U per disinstallare i pacchetti, dal momento che funziona bene anche quando non ci sono versioni precedenti del pacchetto installate.

Dal momento che RPM esegue degli upgrade "intelligenti" mantenendo i file di configurazione, potrebbe apparire un messaggio come:

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

Questo significa che i cambiamenti che avete apportato al file di configurazione potrebbero non essere "compatibili in avanti" con il nuovo file di configurazione nel pacchetto; perciò RPM salva il file originale e ne installa uno nuovo. In tal caso è necessario aggiornare manualmente il nuovo file di configurazione basandosi sul file di configurazione che è stato rinominato.

Poichè la fase di aggiornamento è realmente una combinazione dei processi di installazione e di disinstallazione, potreste trovare qualche errore dovuto a queste due modalità. Inoltre se state provando ad effettuare un aggiornamento con un pacchetto più vecchio, apparirà il messaggio:

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

Per forzare l'operazione, potete inserire l'opzione --oldpackage alla linea di comando:

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

Aggiornamento

Il Freshening è simile all'aggiornamento:

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

Le opzioni di RPM per aggiornare solo i file installati (freshening) controllano le versioni dei pacchetti specificati alla linea di comando rispetto alle versioni degli stessi pacchetti che sono già installati sul vostro sistema. Quando viene specificato un pacchetto RPM più recente di quello installato, allora viene aggiornato. L'opzione freshen non aggiorna un pacchetto che non sia stato precedentemente installato sul sistema. Questa è la differenza sostanziale tra aggiornamento e freshen, poiché l'aggiornamento (-U) installa il pacchetto a prescindere dal fatto che fosse o meno presente sul sistema.

Le opzioni di aggiornamento selettivo di RPM funzionano sia con i singoli pacchetti che con i gruppi di pacchetti. Risulta particolarmente utile quando avete scaricato una consistente quantità di pacchetti differenti e volete aggiornare solo quei pacchetti che erano già presenti sul sistema. Utilizzando queste opzioni significa che non sarà necessario eliminare dalla lista di pacchetti scaricati tutti quelli che non vogliamo installare prima di usare RPM.

In tal caso, sarà sufficiente eseguire il seguente comando:

# rpm -Fvh *.rpm
	    

RPM aggiornerà automaticamente quei pacchetti già presenti sul sistema.

Effettuare una query

Interrogare il database dei pacchetti installati è possibile grazie a rpm -q. Un uso banale è rpm -q foo che visualizzerà come risultato il nome del pacchetto, la versione, il numero di release del pacchetto installato foo:

# rpm -q foo
foo-2.0-1
#
	    

Invece di specificare il nome del pacchetto, potete usare le seguenti opzioni con -q per specificare il pacchetto che volete interrogare. Queste vengono chiamate Package Specification Options.

Ci sono diversi modi per specificare le informazioni che vogliamo visualizzare sui pacchetti interrogati. Le seguenti opzioni vengono impiegate per selezionare il tipo di informazione che volete.

Per queste opzioni che mostrano liste di file, potete aggiungere alla linea di comando -v per avere una lista in un formato simile a quallo prodotto da ls -l.

Verifica

Verificare un pacchetto comporta comparare informazioni relative ad un file installato con le stesse informazioni della versione originale. Tra le altre cose la verifica confronta la dimensione, MD5 SUM, i permessi, il proprietario e il gruppo per ciascun file.

Il comando rpm -V verifica un pacchetto. Ad esempio potete digitare rpm -V foo per verificare che tutti i file installati tramite il pacchetto foo non siano stati alterati.

Se la verifica non riporta nessun errore non verrà generato nessun output. Se, invece, ci sarà qualche discrepanza verrà visualizzata. Il formato dell'output sarà una stringa di otto caratteri, una eventuale "c" che denota i file di configurazione ed il nome del file. Ognuno degli otto caratteri riporta il risultato di un confronto fra un attributo del file e il dato analogo memorizzato nel database di RPM. Un singolo "." significa che il test ha avuto esito positivo. I seguenti caratteri denotano il fallimento di certi test:

Se appaiono dei messaggi di output, potete scegliere se rimuovere e reinstallare il pacchetto, oppure se conviene risolvere il problema manualmente.