重建 CentOS 或 RHEL 上被损坏的 RPM 数据库
有时候使用 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论