GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come recuperare da un database RPM corrotto (ricostruzione di un database RPM)

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 Packages
Nota :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


Cent OS
  1. Come creare un database in PostgreSQL

  2. Come recuperare un lavoro in background da una shell precedente??

  3. Come connettersi a un database MySQL in remoto da un computer

  4. Come recuperare file di pacchetto rpm eliminati (librerie, file di configurazione) in CentOS/RHEL 7

  5. Ricostruzione di un database RPM danneggiato

Come ripristinare un database MS SQL da SolidCP?

Come ripristinare un database MySQL da SolidCP?

Come modificare la password del database MySQL da WebsitePanel 2.1?

Come ripristinare il database MS SQL da WebsitePanel 2.1?

Come ripristinare il database MySQL da WebsitePanel 2.1?

Come ripristinare un database MySQL da .SQL Backup