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

发布于 2023-03-02 00:20:58 字数 1414 浏览 24 评论 0

有时候使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

列表为空,暂无数据

关于作者

0 文章
0 评论
4 人气
更多

推荐作者

云淡月浅

文章 0 评论 0

静谧幽蓝

文章 0 评论 0

511076384

文章 0 评论 0

情话墙

文章 0 评论 0

百思不得你姐

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击“接受”或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文