Errore yum: apertura rpmdb non riuscita


42

Sto cercando di eseguire yum updatee sto eseguendo questo errore:

rpmdb: PANIC: fatal region error detected; run recovery
error: db3 error(-30974) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

Ho controllato la pagina come questa, ma l'esecuzione yum clean allesegue lo stesso errore.

Come posso risolvere questo?

Risposte:


84

Ecco come ho risolto il mio problema.

Questa è piuttosto la situazione disordinata. È possibile risolvere questo problema pulendo il database rpm. Per ridurre al minimo il rischio, eseguire un backup dei file /var/lib/rpm/usando il cpcomando:

mkdir /root/backups.rpm.mm_dd_yyyy/
cp -avr /var/lib/rpm/ /root/backups.rpm.mm_dd_yyyy/

Per risolvere questo problema, prova:

# rm -f /var/lib/rpm/__db*
# db_verify /var/lib/rpm/Packages
# rpm --rebuilddb
# yum clean all

Verificare che l'errore sia andato con il seguente comando yum

# yum update

Questa soluzione sembra funzionare anche con dnf anziché con yum.
unhammer,

Ottengo "transazioni non completate rimanenti .." dopo aver fatto tutto questo, e i pacchetti rotti che hanno creato il problema continuano a bloccare eventuali installazioni future. Del resto, perché l'utente finale dovrebbe vedere / fare qualcosa del genere? Se il yum-db ha un problema, dovrebbe pulirsi / ripararsi automaticamente - con al massimo un messaggio a / n che potrebbe essere rifiutato da un tinker. Ho trovato la correzione per il mio caso - fai quanto sopra, poi fai "yum-complete-transazione - solo
pulizia

8
Perché non solo cd /var/lib/rpm; db_recover? Nella maggior parte dei casi è molto meno un'opzione nucleare.
Craig Ringer,

3
Trovo sudo rpm --rebuilddbda solo a risolvere il mio caso. Tuttavia sempre il backup /var/lib/rpmper sicurezza.
Alick,

Per coloro che vedono ancora il messaggio ucciso durante l'installazione di yum, basta riavviare il server. Sì, fa schifo riavviare per far funzionare qualcosa di semplice come questo, ma questa è stata l'unica cosa che ha funzionato per me.
Nirmal,

0

Grazie Alex, la tua risposta ha funzionato per me a parte una leggera modifica che ho dovuto apportare.

rm -f /var/lib/rpm/__db*

errori restituiti

rm: cannot remove `/var/lib/rpm/__db.001': Is a directory
rm: cannot remove `/var/lib/rpm/__db.002': Is a directory
rm: cannot remove `/var/lib/rpm/__db.004': Is a directory

quindi ho dovuto ricorrere con

rm -rf /var/lib/rpm/__db*

2
Quelle non dovrebbero essere directory. Se lo vedi, allora potresti voler eseguire fscksulla tua partizione per assicurarti di non avere il danneggiamento dei file.
docwhat,

0

Ho provato quello sopra non funzionava

sotto funziona bene

# cd /var/lib
# tar -zcvf /var/preserve/rpmdb-$(date +%Y-%m-%d_%H-%M-%S).tar.gz rpm

Nota: questo backup tar può essere utilizzato se il tentativo di ripristinare il database RPM presenta problemi.

Verifica l'integrità del file dei pacchetti:

# cd /var/lib/rpm
# rm -f __db*      # to avoid stale locks
# /usr/lib/rpm/rpmdb_verify Packages

# mv Packages Packages.orig
# /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages


# rpm -vv --rebuilddb

Verifica ancora una volta il database RPM:

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages

0

Tutto quello che dovevo fare era eliminare i due file con l'estensione ".lock" e i tre file che iniziavano con "__db".

# rm /var/lib/rpm/.dbenv.lock
# rm /var/lib/rpm/.rpm.lock
# rm /var/lib/rpm/__db*

Dopo quello, ha yum updatefunzionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.