Red Hat Linux 7.1: Official Red Hat Linux Customization Guide | ||
---|---|---|
Indietro | Capitolo 17. Gestione dei pacchetti con RPM | Avanti |
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.
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:
I CD-ROM Red Hat Linux ufficiali
La pagina degli Errata disponibile all'indirizzo http://www.redhat.com/support/errata
Un sito mirro FTP di Red Hat disponibile all'indirizzo http://www.redhat.com/mirrors.html
Red Hat Network — Per maggiori informazioni su Red Hat Network, consultate il Capitolo 19.
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.
Nota 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:
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.
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 #################################### # |
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.
L'operazione di rimozione è semplice quanto quella di installazione. Al prompt della shell digitate il comando seguente:
# rpm -e foo # |
Nota 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.
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 #################################### # |
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.
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 # |
Nota 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.
-a interroga tutti i pacchetti installati.
-f <file> interroga il pacchetto contenente il <file>. Quando specificate un file, dovete specificare il percorso del file (per esempio, /usr/bin/ls).
-p <packagefile> interroga il pacchetto <packagefile>.
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.
-i mostra informazioni sul pacchetto come il nome, la descrizione, la release, le dimensioni, la data di installazione, il distributore e altre informazioni di vario genere.
-l mostra l'elenco dei file contenuti nel pacchetto.
-s mostra lo stato di tutti i file nel pacchetto.
-d mostra un elenco dei file di documentazione (pagine man, pagine info, file README ecc.).
-c mosta un elenco dei file di configurazione. Questi sono i file che potete modificare dopo l'installazione per configurare il pacchetto nel vostro sistema (per esempio sendmail.cf, passwd, inittab, ecc.).
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.
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:
Per verificare un pacchetto contenente un file particolare:
rpm -Vf /bin/vi |
Per verificare TUTTI i pacchetti installati:
rpm -Va |
Per verificare i pacchetti installati di un pacchetto RPM:
rpm -Vp foo-1.0-1.i386.rpm |
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:
5 — MD5 checksum
S — Dimensioni del file
L — Link simbolico
T — data e ora di modifica del file
D — Dispositivo
U — Utente
G — Gruppo
M — Modalità (include permessi e tipo di file)
? — File non leggibile
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.