GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare/rimuovere/interrogare/aggiornare i pacchetti RPM in Linux (cheat sheet)

Manutenzione del software tramite RPM (Red Hat Package Manager)

RPM è un potente software manager che può essere utilizzato per creare, installare, interrogare, verificare, aggiornare e disinstallare singoli pacchetti software. Un pacchetto RPM è costituito da un archivio di file e informazioni sul pacchetto come nome, versione, una descrizione e informazioni sulle dipendenze da altri pacchetti RPM.

RPM è più di uno strumento specifico di Red Hat. Anche molte altre distribuzioni moderne, come Ubuntu e SuSE, utilizzano RPM. I vantaggi dell'utilizzo di RPM includono:

  • Distribuzione, installazione, aggiornamento e rimozione semplificate del software
  • Garantisce che:
    • Il software prerequisito è installato sul sistema.
    • Le versioni del software prerequisito rimangono compatibili.
    • I file di configurazione modificati localmente non vengono clonati quando l'RPM viene aggiornato.
    • I file di configurazione modificati localmente vengono salvati con un suffisso ".rpmsave" se il pacchetto viene successivamente eliminato.
  • Consente la certificazione che il software installato non è stato alterato, modificato, corrotto o modificato in alcun modo.

RPM conserva le informazioni sui pacchetti installati in "/var/lib/rpm ” directory.

I componenti dello strumento RPM sono:

  • Un database personalizzato contenente informazioni su tutto il software installato sul sistema, raccolte dai singoli RPM.
  • Un eseguibile "/bin/rpm".
  • Repository accessibili tramite Internet dei pacchetti RPM disponibili.

Tipi di pacchetti RPM

I pacchetti RPM sono di due categorie:fonte e binario .

È sempre possibile riconoscere un RPM di origine perché il nome del file termina con la stringa “.src.rpm “. In un RPM sorgente non ci sono solo i file del codice sorgente del programma originale, ma gli script che consentono al codice di essere ricompilato automaticamente, installato automaticamente e rimosso automaticamente. Non sono presenti file eseguibili dell'utente finale in un RPM di origine. Di solito, solo gli sviluppatori sono interessati a un RPM sorgente.

Un RPM binario contiene i componenti dell'utente finale di un RPM. I nomi dei file RPM binari identificano l'architettura host per i contenuti. Ad esempio, il file RPM binario:

bash-3.1-16.1.x86_64.rpm

Contiene file utilizzabili solo su una CPU con architettura Intel X86 a 64 bit. Altri valori di architettura comuni includono "i386" per host Intel a 32 bit. Alcuni RPM binari possono essere installati su qualsiasi architettura CPU perché i loro file funzioneranno su qualsiasi host; un esempio di questi pacchetti “.noarch.rpm” è l'RPM “tzdata” che contiene informazioni sui fusi orari mondiali. Per aggiornare il tuo sistema con l'ultima versione di un pacchetto, avrai bisogno dell'RPM binario più recente.

Schema di denominazione degli RPM

Ogni pacchetto RPM è contenuto in un unico file. Il nome del file ha diversi campi per identificare completamente il contenuto del pacchetto. Sebbene gli strumenti RPM stessi non si basino sul nome del file stesso, dovresti comprendere la convenzione del nome del file per aiutarti a identificare o scaricare il pacchetto corretto. Ecco un esempio di nome file RPM:

bash-3.1-16.1.x86_64.rpm

Questo RPM è per la shell BASH ("/bin/bash"). Il nome del file è composto da più parti:

[name]-[version]-[release].[arch].rpm

dove:

    [nome] è il nome del programma o del pacchetto. Il [nome] viene solitamente assegnato dall'autore del programma. Nel nostro esempio, gli sviluppatori hanno deciso di chiamare il loro prodotto "bash" per ragioni che sembravano loro divertenti.
  • versione] identifica quale edizione del software contiene questo RPM. Il numero [versione] è assegnato dall'autore del programma. L'utilizzo del numero consente di determinare quale versione dei sorgenti dell'autore è stata utilizzata per generare l'RPM.
  • [rilascio] fornisce il numero di edizione del file RPM stesso e non la versione dei file sorgente dell'autore. Un RPM aggiornato può essere rilasciato per fornire una versione patchata del software originale dell'autore. Non è necessario che la patch provenga dallo sviluppatore originale, quindi l'RPM [release] viene incrementato invece della [versione].
  • [arcata] descrive il contenuto dell'RPM e indica se questo file contiene l'origine del prodotto (un ".src.rpm"), file indipendenti dall'architettura (un ".noarch.rpm") o file che possono essere installati solo su un particolare host tipo (un ".sh.rpm" funzionerà solo su un processore incorporato STRONGHOLD).
Nota :La [versione] è controllata dall'autore originale e la [versione] è controllata da chi ha costruito l'RPM.

Capire le versioni RPM

I campi RPM [versione] e [versione] non sono sempre strettamente numerici e possono contenere altri caratteri oltre alle normali cifre. È comune vedere sia una versione "10" che una versione "10a" dello stesso pacchetto. A volte scegliere la versione più recente può essere complicato. Ecco come lo stesso RPM confronta internamente i numeri di versione e di rilascio:

1. Rimuovere il prefisso [nome] e il suffisso “.[arch].rpm”. Ad esempio,:
"bash-3.1-16.1.x86_64.rpm" diventa "3.1-16.1" e "bash-3.1-16.5a.1.x86_64.rpm" diventa "3.1-16.5a.1"

2. Confronta le stringhe rimanenti carattere per carattere, da sinistra a destra finché non viene trovata una cifra. Se i caratteri differiscono, il carattere successivo nella sequenza di confronto è l'RPM più recente.

3. Quando si incontra una cifra, convertire l'intera sequenza di cifre in un unico numero binario. Nel nostro esempio, i due caratteri “16” sono combinati in un valore di sedici (16). I valori binari risultanti vengono confrontati e il valore maggiore è l'RPM più recente. Pertanto, un RPM con una [versione] di "0010" è più recente di uno con una [versione] di "9".

I passaggi 2 e 3 vengono ripetuti secondo necessità fino a quando non si verifica una differenza.

Installazione e rimozione di file

Nota :Di solito è possibile installare solo una o di un RPM alla volta.

Le versioni successive vengono in genere installate utilizzando "-U ” (aggiornamento) Funzione RPM invece di “-i Funzione RPM. Eccezioni comuni all'unica regola RPM sono gli RPM del kernel. Un sistema ha comunemente diverse versioni di kernel installate; RPM ha un elenco di quali RPM possono avere più versioni installate. Per eliminare una versione quando ne sono installate diverse, è necessario specificare completamente il nome e la versione del pacchetto.

Sull'architettura x86_64, è comune avere entrambi i pacchetti RPM ".i386" a 32 bit e ".x86_64" a 64 bit installati per supportare applicazioni sia a 32 bit che a 64 bit. Normalmente, RPM non mostra l'architettura di un pacchetto su una query, ma puoi visualizzarla manualmente.

Installazione e rimozione

# rpm -i --install (install new RPM; error if already installed)
# rpm -U --upgrade (delete existing RPM, if any; install new)
# rpm -F --freshen (update RPM only if package already installed)
# rpm -e --erase (remove, delete, expunge)

Opzioni comuni
Output:-v (verbose – nome del file), -h (hash)
Precondizioni:–nodeps, –replacefiles, –force (ATTENZIONE QUI!!!)
Riposizionamento:–excludepath, –prefix, –relocate, –badreloc, –root
URL Support:ftp, http

Esempi:

# rpm -ivh binutils-2.11.90.0.8-12.i386.rpm
# rpm -Uvh finger-0.17-9-i386.rpm
# rpm -Fvh ftp://updates.redhat.com/current/i386/*.rpm
# rpm -e diffutils
# rpm -e kernel-enterprise-2.4.9-e.12

Suggerimento :Mai, mai, utilizzare l'opzione "-U" per installare un nuovo RPM del kernel. La funzione di aggiornamento "-U" elimina prima l'RPM corrente dal sistema e quindi tenta di installare il nuovo RPM. Qualsiasi problema che impedisce l'installazione del nuovo RPM lascerà il sistema non avviabile. Questo non è quello che vuoi, quindi usa sempre l'opzione "-i" per installare un RPM del kernel.

Query (pacchetti e/o informazioni)

Utilizzare una query per informazioni sui pacchetti installati. È possibile eseguire query su tutti i pacchetti installati o su un singolo pacchetto installato. Puoi anche scoprire quale RPM fornisce un particolare file.

# rpm -q [packages] [information]
# rpm -qa (all installed packages)
# rpm -q package_name
# rpm -qf (filename)
# rpm -qp (package filename)

Informazioni
predefinito (nome pacchetto)
-i :informazioni generali
-l :elenco file

Esempi:

# rpm -qa
# rpm -q kernel -i (information)
# rpm -q kernel -l (files contained in package)
# rpm -q kernel --requires (prereqs)
# rpm -q kernel --provides (capabilities provided by package)
# rpm -q kernel --scripts (scripts run during installation and removal)
# rpm -q kernel --changelog (revision history)
# rpm -q kernel -queryformat format (rpm --querytags for list of options)

Suggerimento :durante la ricerca di un particolare pacchetto RPM quando il nome esatto non è noto, una pipeline di comandi come:

$ rpm -qa | grep foo

è comunemente usato. Le versioni successive dello strumento RPM consentono di farlo in modo succinto come:

$ rpm -qa '*foo*'

Query – Verifica (file)

Il database RPM contiene molti attributi su ogni singolo file installato da un RPM. È possibile verificare lo stato corrente del file rispetto alle informazioni catalogate da RPM al momento dell'installazione del pacchetto.

# rpm -V package_name
# rpm -Va (verify all)
# rpm -Vf (filename)
# rpm -Vp (package filename)
Nota :Molte distribuzioni Linux includono un RPM "prelink" che tenta di ridurre il tempo necessario per avviare un'applicazione utilizzando una libreria condivisa (la maggior parte delle applicazioni utilizza almeno una libreria condivisa e potenzialmente dozzine) aggiungendo informazioni speciali direttamente nel file di programma di un'applicazione.

L'aggiunta di queste informazioni rende le applicazioni più veloci, ma le modifiche ai file invalidano la maggior parte degli attributi del file nel database RPM, come la data dell'ultima modifica del file, la dimensione del file e il checksum MD5 del file.

Query – Verifica (pacchetti)

# rpm -import /mnt/cdrom/RPM-GPG-KEY
# rpm -q gpg-pubkey
# rpm --checksig m4-1.4.1-11.i386.rpm

Esempi:

# rpm -qf /path/filename (what package owns filename)
# rpm -qf /path/filename -i (what does it do)
# rpm -qp m4-1.4.1-11.i386.rpm -l (files in m4)
# rpm -qp m4-1.4.1-11.i386.rpm --requires (prereqs needed to install m4)
# rpm -q --whatprovides glibc.so (what package provides requisite library)

Riparare il database RPM

Lo strumento RPM utilizza la propria implementazione di database personalizzata per contenere le informazioni. A volte quel database può essere danneggiato; i sintomi includono affermazioni sulla mancanza di un pacchetto RPM installato; o tenta di aggiornare un RPM semplicemente si blocca. Se il tuo database RPM è bloccato o danneggiato, puoi provare a ripararlo con questi comandi. Non è garantito che questo processo funzioni.

Devi essere loggato con il privilegio di superutente (noto anche come "root") per questi passaggi. I comandi possono essere copiati e incollati direttamente in una finestra di terminale radice.

1. Assicurati che non siano rimasti processi RPM in esecuzione sul tuo sistema. Usa il comando ps per identificarli. Usa il comando kill per terminare qualsiasi processo "rpm" che trovi; potrebbe essere necessario un "kill -9".

2. Elimina i file di blocco utilizzati da RPM:

# rm -f /var/lib/rpm/__db*

3. Se si verifica un comando "rpm" sospeso, riprovare. Se funziona, hai finito. In caso contrario, eseguire nuovamente i passaggi 1 e 2. Quindi procedi al passaggio successivo.

4. Fai un backup del tuo database RPM:

# cd /var/lib
# mkdir rpm-backup
# rsync -av ./rpm/. ./rpm-backup/.

5. Ricostruisci il tuo database RPM:

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

6. Riprova il comando RPM non riuscito.


Linux
  1. Come creare pacchetti rpm

  2. Come abilitare Snap su Linux Mint 20 e installare i pacchetti Snap

  3. Come installare, rimuovere e aggiornare il software su Arch Linux

  4. Come installare pacchetti da un repository specifico in Linux

  5. Come installare pacchetti software con un playbook Ansible

Rimuovere i pacchetti installati in una determinata data/ora in Linux

Come installare il software dal sorgente in Linux

Come installare e rimuovere software in Manjaro Linux

Come installare il software Arduino (IDE) su Linux

Come installare il software Windows su Linux con Bottles

Come installare wget su CentOS 7 con un Cheat Sheet di wget