yum Fehler: Öffnen von rpmdb fehlgeschlagen

42

Ich versuche zu laufen yum updateund ich führe diesen Fehler aus:

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

Ich habe die Seite wie diese überprüft, aber beim Ausführen wird yum clean allderselbe Fehler ausgeführt.

Wie kann ich das lösen?

Alex Jolig
quelle

Antworten:

84

So habe ich mein Problem behoben.

Das ist ziemlich chaotisch. Sie können dies beheben, indem Sie die rpm-Datenbank löschen. Erstellen Sie eine Sicherungskopie der Dateien /var/lib/rpm/mit dem folgenden cpBefehl , um das Risiko zu minimieren :

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

Um dieses Problem zu beheben, versuchen Sie:

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

Stellen Sie sicher, dass der Fehler mit dem folgenden yum-Befehl behoben wurde

# yum update
Alex Jolig
quelle
Diese Lösung scheint auch mit dnf statt mit yum zu funktionieren.
Unhammer
Nach all dem erhalte ich die Meldung, dass die Transaktionen noch nicht abgeschlossen sind, und die fehlerhaften Pakete, die das Problem verursacht haben, blockieren weiterhin alle zukünftigen Installationen. Warum sollte der Endbenutzer dies sehen / tun müssen? Wenn die yum-db ein Problem hat, sollte sie sich automatisch bereinigen / reparieren - mit höchstens einer / n Eingabeaufforderung, von der sich ein os-tinkerer möglicherweise abmelden möchte. Ich habe die Fehlerbehebung für meinen Fall gefunden - mache das Obige und dann "yum-complete-transaction --cleanup-only"
JosephK
8
Warum nicht einfach cd /var/lib/rpm; db_recover? In den meisten Fällen ist dies weniger eine nukleare Option.
Craig Ringer
3
Ich finde sudo rpm --rebuilddballeine löst meinen Fall. Trotzdem immer /var/lib/rpmsicher sichern .
Alick
Für diejenigen, die die Nachricht über den Abbruch bei der Installation immer noch sehen, starten Sie einfach Ihren Server neu. Ja, es ist scheiße, neu zu starten, um so etwas Grundlegendes zum Laufen zu bringen, aber das war das einzige, was für mich funktioniert hat.
Nirmal
0

Danke Alex, deine Antwort hat bis auf eine kleine Änderung, die ich vornehmen musste, für mich funktioniert.

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

Fehler zurückgegeben

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

also musste ich mit rekursieren

rm -rf /var/lib/rpm/__db*
Ian Ellis
quelle
2
Das sollten keine Verzeichnisse sein. Wenn dies angezeigt wird, möchten Sie möglicherweise fsckauf Ihrer Partition ausgeführt werden, um sicherzustellen, dass keine Dateibeschädigung vorliegt.
docwhat
0

Ich habe versucht, die oben genannten es hat nicht funktioniert

unten funktioniert gut

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

Hinweis: Diese Tar-Sicherung kann verwendet werden, wenn beim Versuch, die RPM-Datenbank wiederherzustellen, Probleme auftreten.

Überprüfen Sie die Integrität der Paketdatei:

# 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

Überprüfen Sie noch einmal die RPM-Datenbank:

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages
Mischling
quelle
0

Alles, was ich tun musste, war, die beiden Dateien mit der Erweiterung ".lock" und die drei Dateien, die mit "__db" begannen, zu löschen.

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

Danach yum updatearbeitete.

Isapir
quelle