在 CentOS(以及 RHEL、Fedora 等基于 yum/dnf 的系统)中,yum clean allyum makecache 是两个常用的 YUM 包管理命令,用于清理和重建本地的软件包元数据缓存。


1. yum clean all

作用:清除 YUM 缓存中的所有内容。

YUM 在使用过程中会将远程仓库的元数据(metadata)缓存到本地(通常位于 /var/cache/yum//var/cache/dnf/,取决于系统版本),以加快后续操作速度。但这些缓存可能过时或损坏,导致安装失败或列出旧版本的软件包。

执行效果

  • 删除所有已缓存的软件包头信息(headers)
  • 删除所有已缓存的 RPM 包(如果配置了缓存包)
  • 删除所有仓库的元数据(repodata)
  • 清除插件缓存等

典型使用场景

  • 更换了软件源(如从官方源切换为阿里云源)后
  • 执行 yum listyum install 出现错误,怀疑缓存问题
  • 需要强制刷新仓库信息
  1. sudo yum clean all

注意:该命令不会删除已安装的软件包,只影响缓存。


2. yum makecache

作用:从配置的软件仓库下载最新的元数据,并在本地生成缓存。

这相当于“手动刷新”YUM 的仓库信息。通常在执行 yum clean all 后紧接着运行此命令,以确保使用最新、干净的仓库数据。

执行效果

  • 为每个启用的仓库下载 repodata(包括 filelists、primary、other 等 XML 文件)
  • 将其存储在本地缓存目录中
  • 后续的 yum listyum searchyum install 等操作将基于这些新数据
  1. sudo yum makecache

在较新的 CentOS 7/8 中,yum makecache 可能会提示“fast”模式(即 yum makecache fast),它只缓存必要的元数据,速度更快。


常用组合命令

  1. sudo yum clean all && sudo yum makecache

这个组合常用于:

  • 更换镜像源后刷新仓库
  • 解决因缓存导致的包版本不一致问题
  • 确保系统使用的是最新的可用软件包列表

补充说明(CentOS 版本差异)

系统版本 包管理器 缓存路径
CentOS 6/7 yum /var/cache/yum/
CentOS 8+ dnf(兼容 yum) /var/cache/dnf/

在 CentOS 8 及以后,虽然仍可使用 yum 命令,但底层实际调用的是 dnf,行为类似。