1. 问题现象与诊断
当你在Linux服务器上执行yum安装命令时,突然遇到如下报错:
bash复制error: rpmdb: BDB0113 Thread/process 80973/140577339123776 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 - (-30973)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:
这个错误表明RPM数据库(存储在/var/lib/rpm目录下)已经损坏。RPM数据库是Berkeley DB(BDB)格式的数据库,用于记录系统中所有已安装RPM包的信息。当这个数据库损坏时,所有依赖它的工具(如yum、rpm等)都将无法正常工作。
注意:这个问题通常发生在非正常关机、磁盘空间不足、系统崩溃或强制终止rpm/yum进程后。我在实际运维中遇到过多次,特别是在虚拟机突然断电的情况下最容易出现。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 解决方案:重建RPM数据库
2.1 备份现有数据库(强烈建议)
在开始修复前,强烈建议先备份当前的RPM数据库。虽然它已经损坏,但备份可以防止意外情况发生。
bash复制mkdir -p /tmp/rpm_backup_$(date +%Y%m%d)/
cp -a /var/lib/rpm /tmp/rpm_backup_$(date +%Y%m%d)/
这个命令会:
- 在/tmp目录下创建一个以当前日期命名的备份目录
- 将整个/var/lib/rpm目录复制到备份目录中
实操心得:我习惯在备份目录名中加入日期,这样当需要回滚时可以清楚地知道备份的时间点。另外,/tmp目录通常会在重启后清空,所以如果是重要服务器,建议将备份放到更持久的位置。
2.2 删除损坏的数据库文件
RPM数据库损坏通常是由
