Alcuni giorni fa uno dei nostri clienti ha riferito di non poter installare alcun pacchetto utilizzando il comando yum utilizzando CentOS Linux. Dopo aver indagato, ho scoperto che il database RPM era danneggiato. Questo è un problema molto comune sui server CentOS e RHEL.
I server CentOS e RHEL utilizzano rpm per gestire l'installazione, la rimozione e gli aggiornamenti dei pacchetti. Se il database rpm è danneggiato in qualche modo, altri strumenti di sistema che si basano su RPM come Yum/Dnf smetteranno di funzionare.
Come posso ricostruire il database RPM su CentOS o RHEL?
Installa alcuni requisiti per assicurarti di poter correggere il tuo database RPM:
yum install db4-utils yum-utils -y
Assicurati sempre di avere un backup del tuo attuale database RPM
rsync -avpr /var/lib/rpm /var/lib/rpm.bak
Ricostruire un database RPM danneggiato:2 soluzioni
1) Rimuovere i file di database RPM e ricostruire:
rm /var/lib/__db* -fv rpm --rebuilddb
Il comando rpm –rebuilddb ricostruisce il database RPM in base al file /var/lib/rpm/Packages. I file "Pacchetti" sono necessari per ricostruire il database RPM. Su server lenti l'esecuzione di questo comando può richiedere del tempo.
Prova a utilizzare yum normalmente ora, se ciò non risolve il tuo problema, vai al passaggio 2:
2) Ricarica i pacchetti RPM
Un'altra buona strategia per ricostruire il database RPM danneggiato è utilizzare gli strumenti db_dump e db_load. Nell'esempio seguente utilizzeremo db_dump per eseguire il dump del file Packages, quindi db_load verrà utilizzato per ricaricare il file Packages. Questo è un modo alternativo per risolvere i problemi di RPM Db:
cd /var/lib/rpmdb mv Packages Packages.bak db_dump Packages.bak | db_load Packages
Come ulteriore controllo di integrità, interroga tutte le intestazioni nel DB
rpm -qa
Infine, ricostruisci il database RPM:
rpm --rebuilddb
A questo punto dovresti avere il tuo database RPM di nuovo completamente funzionante. Facci sapere se questi due passaggi non funzionano per te o se conosci altre soluzioni da condividere con noi.
Ulteriori letture
- Ricostruire un database RPM, da rpm.org:http://www.rpm.org/max-rpm/ch-rpm-miscellania.html
- Ricostruire il database RPM, a cura di:fedoraproject.org: http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch04s05s02.html
- Recupero RPM DB su RHEL, di Daniel Berrange: http://people.redhat.com/berrange/notes/rpmrecovery.html
La ricostruzione di un database RPM danneggiato è stata modificata l'ultima volta:7 febbraio 2017 da Esteban Borges