在 CentOS(以及 RHEL、Fedora 等基于 yum/dnf 的系统)中,yum clean all 和 yum makecache 是两个常用的 YUM 包管理命令,用于清理和重建本地的软件包元数据缓存。
1. yum clean all
作用:清除 YUM 缓存中的所有内容。
YUM 在使用过程中会将远程仓库的元数据(metadata)缓存到本地(通常位于 /var/cache/yum/ 或 /var/cache/dnf/,取决于系统版本),以加快后续操作速度。但这些缓存可能过时或损坏,导致安装失败或列出旧版本的软件包。
执行效果:
- 删除所有已缓存的软件包头信息(headers)
- 删除所有已缓存的 RPM 包(如果配置了缓存包)
- 删除所有仓库的元数据(repodata)
- 清除插件缓存等
典型使用场景:
- 更换了软件源(如从官方源切换为阿里云源)后
- 执行
yum list或yum install出现错误,怀疑缓存问题 - 需要强制刷新仓库信息
sudo yum clean all
注意:该命令不会删除已安装的软件包,只影响缓存。
2. yum makecache
作用:从配置的软件仓库下载最新的元数据,并在本地生成缓存。
这相当于“手动刷新”YUM 的仓库信息。通常在执行 yum clean all 后紧接着运行此命令,以确保使用最新、干净的仓库数据。
执行效果:
- 为每个启用的仓库下载 repodata(包括 filelists、primary、other 等 XML 文件)
- 将其存储在本地缓存目录中
- 后续的
yum list、yum search、yum install等操作将基于这些新数据
sudo yum makecache
在较新的 CentOS 7/8 中,
yum makecache可能会提示“fast”模式(即yum makecache fast),它只缓存必要的元数据,速度更快。
常用组合命令
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,行为类似。
