Ricerca nel sito web

Come ricostruire il database RPM danneggiato in CentOS


Il database RPM è costituito da file nella directory /var/lib/rpm/ in CentOS e altre distribuzioni Linux aziendali come RHEL, openSUSE, Oracle Linux e altro ancora.

Se il database RPM è danneggiato, RPM non funzionerà correttamente, quindi gli aggiornamenti non potranno essere applicati al tuo sistema, riscontrerai errori durante l'aggiornamento dei pacchetti sul tuo sistema tramite il gestore pacchetti YUM. Lo scenario peggiore è l'impossibilità di eseguire correttamente i comandi RPM e yum.

Leggi anche: 20 esempi pratici di comando RPM in Linux

Esistono numerosi fattori che possono portare alla corruzione del database RPM, come transazioni precedenti incomplete, installazione di determinati software di terze parti, rimozione di pacchetti specifici e molti altri.

In questo articolo mostreremo come ricostruire un database RPM danneggiato; in questo modo puoi recuperare da un danneggiamento del database RPM in CentOS. Ciò richiede i privilegi dell'utente root, altrimenti utilizza il comando sudo per ottenere tali privilegi.

Ricostruisci il database RPM danneggiato in CentOS

Per prima cosa inizia eseguendo il backup del tuo attuale database RPM prima di procedere (potresti averne bisogno in futuro), utilizzando i seguenti comandi.

mkdir /backups/
tar -zcvf /backups/rpmdb-$(date +"%d%m%Y").tar.gz  /var/lib/rpm

Successivamente, verifica l'integrità del file di metadati del pacchetto principale /var/lib/rpm/Packages; questo è il file che deve essere ricostruito, ma prima rimuovi i file /var/lib/rpm/__db* per evitare blocchi obsoleti utilizzando i seguenti comandi.

rm -f /var/lib/rpm/__db*		
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

Nel caso in cui l'operazione precedente fallisca, nel senso che riscontri ancora errori, dovresti scaricare e caricare un nuovo database. Verificare inoltre l'integrità del file Packages appena caricato come segue.


cd /var/lib/rpm/
mv Packages Packages.back
/usr/lib/rpm/rpmdb_dump Packages.back | /usr/lib/rpm/rpmdb_load Packages
/usr/lib/rpm/rpmdb_verify Packages

Ora per controllare le intestazioni del database, interroga tutti i pacchetti installati utilizzando i flag -q e -a e prova a osservare attentamente qualsiasi errore inviato al stderror.


rpm -qa >/dev/null	#output is discarded to enable printing of errors only

Ultimo ma non meno importante, ricostruisci il database RPM usando il seguente comando, l'opzione -vv consente di visualizzare molte informazioni di debug.

rpm -vv --rebuilddb

Utilizza lo strumento dcrpm per rilevare e correggere il database RPM

Abbiamo anche scoperto lo strumento da riga di comando dcrpm (rileva e correggi RPM) utilizzato per identificare e correggere problemi ben noti legati alla corruzione del database RPM. È uno strumento semplice e facile da usare che puoi eseguire senza opzioni. Per un utilizzo efficace e affidabile, dovresti eseguirlo regolarmente tramite cron.

Puoi installarlo dal sorgente; scarica l'albero dei sorgenti e installalo utilizzando setup.py (che dovrebbe acquisire anche la dipendenza psutil da pypi), come mostrato.

git clone https://github.com/facebookincubator/dcrpm.git
cd dcrpm
python setup.py install

Dopo aver installato dcrpm, eseguilo come mostrato.

dcrpm

Infine, prova a eseguire nuovamente il comando rpm o yum non riuscito per vedere se tutto funziona correttamente.

Repository Github dcrpm: https://github.com/facebookincubator/dcrpm
È possibile trovare ulteriori informazioni nella pagina di ripristino del database RPM.

È tutto! In questo articolo abbiamo spiegato come ricostruire un database RPM danneggiato in CentOS. Per porre domande o condividere le tue opinioni su questa guida, utilizza il modulo di feedback riportato di seguito.