如何修复Yum错误:数据库磁盘映像格式错误

在本文中,我们将简要描述YUM,YumDB,然后是Yum错误的原因:数据库磁盘映像格式错误,以及如何解决此错误。

在本文中,我们将简要描述YUMYumDB ,然后是Yum错误的原因:数据库磁盘映像格式错误,以及如何解决此错误。

YUM(Yellowdog Updater,Modified)是用于基于RPM(RedHat Package Manager)的Linux发行版(如Red Hat Enterprise Linux(RHEL),CentOS)以及旧版Fedora Linux的Linux软件包管理的默认高级工具只提一点。

它的工作原理就像apt-get命令或相对较新的apt命令 ; 它可以用于安装新软件包,删除旧软件包并查询已安装和/或可用软件包。 它还可以用于更新系统(连同依赖关系解析和取决于存储的存储库元数据的过时处理)。

注意 :本指南将假设您以root身份控制系统,否则使用sudo命令运行以下所有命令。 有趣的是,您也可以在不输入密码的情况下运行sudo命令 ; 你知道吗,好吧,让我们继续吧。

简要了解YumDB

从版本3.2.26开始,yum将关于安装的软件包的补充信息存储在通用rpm数据库之外的位置; 在一个简单的平面文件数据库中,名为yumdb/ var / lib / yum / yumdb / ) - 不是真正的数据库。

# cd /var/lib/yum/yumdb
# ls 
查看Yum数据库

查看Yum数据库

您可以查看其中一个子目录,以了解有关yumdb的更多信息,如下所示。

# cd b
# ls
检查Yum包信息

检查Yum包信息

虽然这些信息对于yum进程来说并不重要,但对于系统管理员来说,这是非常有用的:它清楚地描述了系统上安装了软件包的上下文。

如果您尝试查看上述屏幕截图中显示的文件( from_repoinstalled_byreleasever等),则可能看不到它们的重要内容。

要访问其中的信息,您必须安装yum-utils ,它提供了一个名为yumdb的脚本,然后使用此脚本,如下所述。

# yum install yum-utils 

以下命令将获取安装了httpdrepo

# yumdb get from_repo httpd
检查包安装的回购

检查包安装的回购

要在软件包httpdmariadb上定义注释,请键入。

# yumdb set note "installed by aaronkilik to setup LAMP" httpd mariadb
设置已安装软件包的注意事项

设置已安装软件包的注意事项

并且输入关于httpd和mariadb的所有yumdb值。

# yumdb info httpd mariadb
查找已安装软件包的信息

查找已安装软件包的信息

修复Yum错误:数据库磁盘映像格式错误

偶尔在使用YUM安装软件包或更新系统时,可能会遇到错误:“ 数据库磁盘映像格式错误”。 它可能是由于损坏的yumdb造成的:可能是由于“ yum update ”进程或程序包安装的障碍造成的。

要解决此错误,您需要通过运行以下命令清理数据库缓存。

# yum clean dbcache 
Yum Clean数据库缓存

Yum Clean数据库缓存

如果上述命令无法正常工作(修复错误),请尝试运行以下命令。

# yum clean all			#delete entries in /var/cache/yum/ directory.
# yum clean metadata		#clear XML metadeta		
# yum clean dbcache		#clear the cached files for database
# yum makecache		        #make cache
清除所有Yum DB缓存和元数据

清除所有Yum DB缓存和元数据

最后,您必须重建系统的RPM数据库才能正常工作。

# mv /var/lib/rpm/__db* /tmp
# rpm --rebuilddb
重建RPM数据库

重建RPM数据库

如果您遵循上述说明,那么现在应该解决错误。 然后尝试更新您的系统如下。

# yum update 

您还可以查看有关yum和其他Linux软件包管理器的重要文章:

  1. 如何使用“Yum历史”来查找已安装或删除的软件包信息
  2. 27“DNF”(Yum的叉)Linux中的RPM包管理命令
  3. 什么是APT和Aptitude? 他们之间有什么真正的区别?
  4. 如何使用“apt-fast”来加速apt-get / apt包下载使用多个镜像

您有任何关于此主题的任何疑问或想法,请使用下面的评论部分来做到这一点。