如何在 CentOS 中重建损坏的 RPM 数据库如何在 CentOS 中重建损坏的 RPM 数据库如何在 CentOS 中重建损坏的 RPM 数据库如何在 CentOS 中重建损坏的 RPM 数据库
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 CentOS 中重建损坏的 RPM 数据库

发表 admin at 2025年2月28日
类别
  • 未分类
标签

RPM数据库由CentOS和其他企业Linux发行版(例如/var/lib/rpm/)中的/var/lib/rpm/目录下的文件组成>RHEL、openSUSE、Oracle Linux 等。

如果RPM数据库损坏,RPM将无法正常工作,因此更新无法应用到您的系统,您在通过YUM软件包管理器更新系统上的软件包时会遇到错误。最坏的情况是无法成功运行任何 rpm 和 yum 命令。

另请阅读:Linux 中 RPM 命令的 20 个实用示例

有许多因素可能导致 RPM 数据库损坏,例如不完整的先前事务、安装某些第三方软件、删除特定软件包等等。

在本文中,我们将展示如何重建损坏的 RPM 数据库;这样您就可以从 CentOS 中的 RPM 数据库损坏中恢复。这需要 root 用户权限,否则,请使用 sudo 命令来获取这些权限。

在 CentOS 中重建损坏的 RPM 数据库

首先使用以下命令备份当前的 RPM 数据库,然后再继续(您将来可能需要它)。

mkdir /backups/
tar -zcvf /backups/rpmdb-$(date +"%d%m%Y").tar.gz  /var/lib/rpm

接下来,验证主包元数据文件/var/lib/rpm/Packages的完整性;这是需要重建的文件,但首先使用以下命令删除 /var/lib/rpm/__db* 文件以防止过时的锁定。

rm -f /var/lib/rpm/__db*		
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

如果上述操作失败,意味着您仍然遇到错误,那么您应该转储并加载新数据库。还要验证新加载的包文件的完整性,如下所示。


cd /var/lib/rpm/
mv Packages Packages.back
/usr/lib/rpm/rpmdb_dump Packages.back | /usr/lib/rpm/rpmdb_load Packages
/usr/lib/rpm/rpmdb_verify Packages

现在检查数据库标头,使用 -q 和 -a 标志查询所有已安装的软件包,并尝试仔细观察发送到 的任何错误标准错误。


rpm -qa >/dev/null	#output is discarded to enable printing of errors only

最后但并非最不重要的一点是,使用以下命令重建 RPM 数据库,-vv 选项允许显示大量调试信息。

rpm -vv --rebuilddb

使用dcrpm工具检测并纠正RPM数据库

我们还发现了dcrpm(检测和纠正 rpm)命令行工具,用于识别和纠正与 RPM 数据库损坏有关的众所周知的问题。它是一个简单易用的工具,您无需选择即可运行。为了有效和可靠的使用,您应该通过 cron 定期运行它。

您可以从源代码安装它;下载源代码树并使用 setup.py 安装它(它也应该从 pypi 获取 psutil 依赖项),如图所示。

git clone https://github.com/facebookincubator/dcrpm.git
cd dcrpm
python setup.py install

安装dcrpm后,如图所示运行它。

dcrpm

最后,尝试再次运行失败的 rpm 或 yum 命令,看看一切是否正常。

dcrpm Github 存储库:https://github.com/facebookincubator/dcrpm
您可以从 RPM 数据库恢复页面找到更多信息。

就这样!在本文中,我们解释了如何在 CentOS 中重建损坏的 RPM 数据库。要提出任何问题或分享您对本指南的看法,请使用下面的反馈表。

©2015-2025 Norria support@norria.com