我正在尝试运行yum update
,但运行时出现以下错误:
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
我检查了页面像这样一个但运行yum clean all
运行同样的错误。
我该如何解决这个问题?
答案1
这就是我解决问题的方法。
您可以通过清理 rpm 数据库来解决此问题。但首先,为了最大限度地降低风险,请确保/var/lib/rpm/
使用cp
命令创建文件备份:
mkdir /root/backups.rpm.mm_dd_yyyy/
cp -avr /var/lib/rpm/ /root/backups.rpm.mm_dd_yyyy/
尝试这个来解决这个问题:
# rm -f /var/lib/rpm/__db*
# db_verify /var/lib/rpm/Packages
# rpm --rebuilddb
# yum clean all
最后使用以下 yum 命令验证错误是否已消失
# yum update
答案2
我所要做的就是删除两个扩展名为“.lock”的文件,以及三个以“__db”开头的文件。
# rm /var/lib/rpm/.dbenv.lock
# rm /var/lib/rpm/.rpm.lock
# rm /var/lib/rpm/__db*
之后yum update
就工作了。
答案3
谢谢亚历克斯,除了我必须做的一个小小的改变之外,你的回答对我有用。
rm -f /var/lib/rpm/__db*
返回错误
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
所以我不得不递归
rm -rf /var/lib/rpm/__db*
答案4
我尝试了上面的方法,但没有成功
下面工作正常
# cd /var/lib
# tar -zcvf /var/preserve/rpmdb-$(date +%Y-%m-%d_%H-%M-%S).tar.gz rpm
注意:如果尝试恢复 RPM 数据库出现问题,可以使用此 tar 备份。
验证包文件的完整性:
# 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
再次验证RPM数据库:
# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages