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.