您当前的位置:首页 > 计算机 > 系统应用 > Linux

重建 CentOS 或 RHEL 上被损坏的 RPM 数据库

时间:12-14来源:作者:点击数:

有时候使用 rpm/yum 命令时可能会出现下面这样的错误

rpm command terminates with “cannot open Packages database in /var/lib/rpm”

或者

rpmdb: Lock table is out of available locker entries

或者

rpmdb: /var/lib/rpm/Packages: unexpected file type or format
error: cannot open Packages index using db3 – Invalid argument (22)

或者

error: rpmdbNextIterator: skipping h# 1601 Header V4 RSA/SHA1 signature: BAD, key ID 2142eef7

这可能是因为 RPM 数据库被损坏了,若没有备份 RPM 数据库 /var/lib/rpm 的话,那么可以尝试下面步骤来进行恢复

1、首先备份现在的RPM数据库,防止后续操作对数据库产生进一步的损坏

tar -cvf rpm.db.tar /var/lib/rpm

2、删除 /var/lib/rpm/__db* 文件,这一步是删除之前 rpm 命令所产生的锁

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

3、尝试重建 RPM 数据库

rpm -vv --rebuilddb

4、验证Packages中文件的完整性

/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

如果上面的步骤还不行,那么需要重新导出倒入数据库

1、备份 Packages 目录

cd /var/lib/rpm
mv /var/lib/rpm/Packages /var/lib/rpm/Packages.bak

2、导出再导入数据库

/usr/lib/rpm/rpmdb_dump Packages.bak |/usr/lib/rpm/rpmdb_load Packages

3、再校验 Packages 文件中的完整性

/usr/lib/rpm/rpmdb_verify Packages

4、检查 DB 中的 headers

rpm -q >/dev/null

5、若上一步没有输出,那么可以重建 index 了

rpm -v --rebuilddb
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐