web-dev-qa-db-fra.com

Erreur yum: échec de l'ouverture de rpmdb

J'essaye d'exécuter yum update et j'exécute cette erreur:

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

J'ai vérifié la page comme celle-ci une mais en exécutant yum clean all exécute la même erreur.

Comment puis-je resoudre ceci?

45
Alex Jolig

C'est ainsi que j'ai résolu mon problème.

C'est tout à fait la situation désordonnée. Vous pouvez résoudre ce problème en nettoyant la base de données rpm. Pour minimiser les risques, effectuez une sauvegarde des fichiers dans /var/lib/rpm/ en utilisant la commande cp:

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

Pour résoudre ce problème, essayez:

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

Vérifiez que l'erreur a disparu avec la commande yum suivante

# yum update
89
Alex Jolig

J'ai essayé celui ci-dessus, cela n'a pas fonctionné

ci-dessous fonctionne bien

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

Remarque: Cette sauvegarde tar peut être utilisée si la tentative de récupération de la base de données RPM a des problèmes.

Vérifiez l'intégrité du fichier Packages:

# 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

Vérifiez à nouveau la base de données RPM:

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

Tout ce que j'avais à faire était de supprimer les deux fichiers avec l'extension ".lock" et les trois fichiers commençant par "__db".

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

Après ça, yum update travaillé.

0
isapir

Merci Alex, ta réponse a fonctionné pour moi à part un léger changement que j'ai dû faire.

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

erreurs renvoyées

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

donc je devais recurse avec

rm -rf /var/lib/rpm/__db*
0
Ian Ellis