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.