Perché il database rpm viene danneggiato
Possono esserci diversi motivi che possono portare al danneggiamento del database rpm. Non è possibile individuare esattamente un singolo RCA per questo, a causa delle limitazioni, non esiste un meccanismo per monitorare il danneggiamento del database rpm.
– Il database rpm viene interrogato ogni volta che l'amministratore/qualche processo esegue un comando rpm.
– Anche durante le transazioni yum, il database rpm viene alterato pesantemente.
– Anche un piccolo puntatore può causare tale danneggiamento.
– Se LD_LIBRARY_PATH è impostato su un valore, anche il database rpm viene danneggiato.
– Se è installato un pacchetto di terze parti che causa modifiche non necessarie nel database rpm.
– Anche le transazioni incomplete possono portare a tali danneggiamenti.
– In caso di partizione /var situata su volumi SAN.
Quindi, in totale, molti fattori possono essere presi in considerazione per tale danneggiamento del database rpm. Se il database rpm viene danneggiato frequentemente, si consiglia di eseguire frequentemente il backup del database RPM tramite cron.
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. I tentativi di interrogare (rpm -q) alcuni pacchetti potrebbero non riuscire con il seguente errore.
rpmdb: /var/lib/rpm/Packages: unexpected file type or format error: cannot open Packages index using db3 - Invalid argument (22)
Se il tuo database RPM è bloccato o danneggiato, puoi provare a ripararlo con questi comandi. Nota:questo processo non è garantito per funzionare. 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".
# ps -ef | grep-i rpm
2. Elimina i file di blocco utilizzati da RPM:
# rm -f /var/lib/rpm/__db*
# /usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages
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. Prova a verificare di nuovo il database rpm.
# cd /var/lib/rpm # /usr/lib/rpm/rpmdb_verify PackagesNota :Se i passaggi di ripristino precedenti non riescono o generano errori, il ripristino della directory /var/lib/rpm da un backup di sistema recente potrebbe essere l'opzione migliore. Ricorda di non sovrascrivere il backup tar poiché potrebbe essere comunque prezioso.
6. Riprova il comando RPM non riuscito.
Esempi di comandi RPM per interrogare, installare, rimuovere e aggiornare i pacchetti