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 sezione Risorse aggiuntive.

Ricerca dei pacchetti 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 quanto 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 -Uvh foo-1.0-1.i386.rpm

Se l'installazione ha successo, potrete visualizzare quanto riportato di seguito:

Preparing...                ########################################### [100%]
   1:foo                    ########################################### [100%]

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

A partire dalla versione 4.1 di RPM, la firma di un pacchetto viene verificata durante l'installazione o l'aggiornamento di un pacchetto. Se la verifica della firma non riesce, verr� visualizzato un messaggio di errore come il seguente:

error: V3 DSA signature: BAD, key ID 0352860f

Se si tratta di una nuova firma, costituita solo dall'intestazione, verr� visualizzato un messaggio di errore simile al seguente:

error: Header V3 DSA signature: BAD, key ID 0352860f

Se non disponete della chiave appropriata installata per la verifica della firma, il messaggio conterr� NOKEY come:

warning: V3 DSA signature: NOKEY, key ID 0352860f

Per ulteriori informazioni sulla verifica di una firma del pacchetto, consultate la sezione Verifica della "firma" di un pacchetto.

NotaNota Bene
 

Se state installato un pacchetto del kernel, dovreste utilizzare rpm -ivh. Per ulteriori informazioni consultate il Capitolo 29.

L'installazione dei pacchetti � un'operazione semplice, ma vi pu� capitare di trovare degli errori.

Pacchetti gi� installati

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

Preparing...                ########################################### [100%]
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

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:

Preparing...                ########################################### [100%]
file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20

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

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

Dipendenze non risolte

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

Preparing...                ########################################### [100%]
error: Failed dependencies:
        bar.so.2 is needed by foo-1.0-1
    Suggested resolutions:
        bar-2.0.20-3.i386.rpm

Se state installando un Red Hat ufficiale, suggerir� in genere che i pacchetti devono risolvere la dipendenza. Questi pacchetti sono disponibili nei CD-ROM di Red Hat Linux o nel sito FTP o mirror di Red Hat e potete aggiungerli al comando:

rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm

Se l'installazione di entrambi i pacchetti riesce, potrete visualizzare quanto segue:

Preparing...                ########################################### [100%]
   1:foo                    ########################################### [ 50%]
   2:bar                    ########################################### [100%]

Se non viene suggerito un pacchetto per risolvere la dipendenza, potete tentare di utilizzare l'opzione --redhatprovides per determinare quale pacchetto contiene il file richiesto. � necessario che il pacchetto rpmdb-redhat sia installato per utilizzare queste opzioni.

rpm -q --redhatprovides bar.so.2

Se il pacchetto che contiene bar.so.2 si trova nel database installato dal pacchetto rpmdb-redhat, verr� visualizzato il nome del pacchetto:

bar-2.0.20-3.i386.rpm

Se volete procedere all'installazione senza risolvere il problema (scelta 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
 

� stato 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:

Preparing...                ########################################### [100%]
error: removing these packages would break dependencies:
        foo is needed by  bar-2.0.20-3.i386.rpm

Perch� RPM ignori questo errore e disinstalli il pacchetto (anche questa operazione � sconsigliabile poich� il pacchetto dipendente non potr� funzionare correttamente), usate l'opzione --nodeps.

Aggiornamento

L'operazione di aggiornamento � simile a quella di installazione. Nella shell digitate quanto segue:

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

Ci� che non vedete sopra � che RPM ha automaticamente disinstallato tutte le versioni precedenti del pacchetto foo. � consigliabile 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 in modo che il sistema possa continuare a funzionare correttamente.

L'aggiornamento � una combinazione dell'installazione e della disinstallazione perci�, durante un aggiornamento di RPM, potete trovare errori di installazione e 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:

package foo-2.0-1 (which is newer than foo-1.0-1) is already installed

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

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

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

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. Questo � ci� che differenzia l'opzione di refresh dall'opzione di aggiornamento. Infatti, l'operazione di aggiornamento installa pacchetti, a prescindere dalla presenza sul sistema di 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 quelli 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.

In questo caso, potete semplicemente digitare il comando che segue:

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:

foo-2.0-1

NotaNota Bene
 

� stato 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 un elenco 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 � stato verificato correttamente non compare alcun output, mentre le eventuali discrepanze rilevate vengono visualizzate. Il formato dell'output � una stringa di 8 caratteri (una possibile, c denota un file di configurazione) e 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 . (un punto) significa che la verifica � risultata corretta. I seguenti caratteri indicano errori in alcune verifiche:

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.