在一台老旧的 CentOS 7 服务器上,突然某次断电,导致系统上的部分可执行程序不可用。为了让服务器上运行的服务程序正常,需要卸载并重装受影响的应用程序。

但是使用 yum 卸载软件时,出现如错误提示:Yum Error: Database Disk Image is Malformed。这说明 yum 的数据库文件损坏了,需要进行修复或者重建。

最简单的修复方法时清除 yum 的数据库缓存:

yum clean dbcache

执行这条语句后,再重试卸载或者安装命令,查看问题是否已经解决。如果问题依旧,那么需要更多步骤来修复问题:

# 删除所有缓存数据
yum clean all
# 删除元数据
yum clean metadata
# 删除数据库缓存文件
yum clean dbcache
# 生成缓存
yum makecache

# 重建rpm 数据库
rm -rf /var/lib/rpm/__db*
rpm --rebuilddb

通过以上操作, yum 应该已经能正常工作了。

如果上述两种方法都还不行,那么建议放大招:使用新的事务(transaction)历史记录:

yum history new

本人也是前两种方式都不管用,用最后一种方法解决的。

参考

1. How to Fix Yum Error: Database Disk Image is Malformed

2. Problem with yum; Error: database disk image is malformed