Red Hat Linux 7.0: The Official Red Hat Linux Reference Guide | ||
---|---|---|
Indietro | Capitolo 5. Amministrazione dei Pacchetti con RPM | Avanti |
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.
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, ...,
![]() | Nota 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:
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 #################################### # |
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 #################################### # |
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.
Disinstallare un pacchetto � semplice come installarlo:
# rpm -e foo # |
![]() | Nota 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.
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 #################################### # |
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.
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.
-a visualizza l'elenco di tutti i pacchetti installati.
-f <file> restituisce il nome del pacchetto che contiene il file specificato. <file>.
-p <packagefile> la ricerca viene effettuata sul pacchetto specificato <packagefile>.
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.
-i mostra le informazioni del pacchetto come il nome, la descrizione, il release, la dimensione, la data di costruzione, la data di installazione, il rivenditore ed altre informazioni varie.
-l mostra la lista di file contenuti nel pacchetto.
-s mostra lo stato di tutti i file nel pacchetto.d
-d mostra la lista dei file di documentazione (pagine man, pagine info, readme, ecc).
-c mostra la lista dei file di configurazione. Questi sono i file che vengono modificati per adattare il software alle proprie esigienze (sendmail.cf, passwd, inittab, etc).
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.
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.
Per verificare un pacchetto contenente uno specifico file:
rpm -Vf /bin/vi |
Per verificare TUTTI i pacchetti installati:
rpm -Va |
Per verificare un pacchetto installato rispetto ad un file di un pacchetto RPM:
rpm -Vp foo-1.0-1.i386.rpm |
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:
5 -- MD5 checksum
S -- Dimensione del File
L -- Link Simbolico
T -- Ora di modifica del File
D -- Dispositivo
U -- Utente
G -- Gruppo
M -- Modalit� (compresi i permessi ed i tipi di file)
? -- File non leggibile
Se appaiono dei messaggi di output, potete scegliere se rimuovere e reinstallare il pacchetto, oppure se conviene risolvere il problema manualmente.