为什么 rpm 数据库会损坏
可能有多种原因导致 rpm 数据库损坏。
由于限制,人们无法准确地确定单个 RCA,因为没有监控 rpm 数据库损坏的机制。
每次管理员/某个进程运行任何 rpm 命令时,都会查询 rpm 数据库。
即使在 yum 事务期间,rpm 数据库也会发生重大变化。
小指针也可能导致这种损坏。
如果 LD_LIBRARY_PATH 设置为某个值,即使是 rpm 数据库也会损坏。
如果安装了任何导致 rpm 数据库发生不必要更改的第三方软件包。
不完整的交易也会导致这种损坏。
如果 /var 分区位于 SAN 卷上。
因此,总的来说,这种 rpm 数据库损坏可以考虑很多因素。
如果 rpm 数据库经常损坏,建议经常通过 cron 备份 RPM 数据库。
on It Road.com
修复 RPM 数据库
RPM 工具使用其自己的自定义数据库实现来包含其信息。
有时该数据库可能会损坏;症状包括声称缺少已安装的 RPM 包;或者尝试更新 RPM 只是挂起。
尝试查询 (rpm -q) 某些软件包可能会失败并显示以下错误。
rpmdb: /var/lib/rpm/Packages: unexpected file type or format error: cannot open Packages index using db3 - Invalid argument (22)
如果 RPM 数据库挂起或者损坏,我们可以尝试使用这些命令修复它。
请注意:不保证此过程有效。
对于这些步骤,我们必须以超级用户权限(又名“root”)登录。
这些命令可以直接复制并粘贴到根终端窗口中。
- 确保系统上没有剩余的 RPM 进程在运行。
使用 ps 命令来识别它们。
使用 kill 命令终止我们找到的任何“rpm”进程;可能需要“kill -9”。
# ps -ef | grep-i rpm
- 删除RPM使用的锁文件:
# rm -f /var/lib/rpm/__db*
# /usr/lib/rpm/rpmdb_verify Packages
如果我们遇到挂起的“rpm”命令,请再试一次。
如果它有效,你就完成了。
如果没有,请再次执行步骤 #1 和 #2.
然后继续下一步。备份 RPM 数据库:
# cd /var/lib # mkdir rpm-backup # rsync -av ./rpm/. ./rpm-backup/.
- 重建你的 RPM 数据库:
# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1
- 再次尝试验证 rpm 数据库。
# cd /var/lib/rpm # /usr/lib/rpm/rpmdb_verify Packages
注意:如果上述恢复步骤失败或者抛出错误,从最近的系统备份中恢复 /var/lib/rpm 目录可能是最佳选择。
请记住不要覆盖 tar 备份,因为它可能仍然很有价值。
- 重试失败的 RPM 命令。
日期:2020-09-17 00:13:46 来源:oir作者:oir