执行 yum clean all 可彻底清除缓存包和元数据,包括 /var/cache/yum/ 下的 rpm 包及 metadata、dbcache、expire-cache 等;需 root 权限,dnf 用户应改用 dnf clean all。

直接执行 yum clean all 就能清掉缓存包和元数据
这是最常用也最彻底的方式,它会同时删除 /var/cache/yum/ 下的 rpm 包文件(packages)和所有元数据(metadata、dbcache、expire-cache 等)。命令本身不区分“临时”或“永久”,只要在缓存目录里、且被 yum 认为可清理的,就全删。
yum clean packages 和 yum clean metadata 要分开用才精准
如果你只想释放空间但保留元数据(比如刚换过镜像源,不想重下 repomd.xml),就只运行:
- yum clean packages:删掉所有已下载但未安装的 .rpm 文件,不影响 yum list 或 yum search 的可用性
- yum clean metadata:删掉 repodata/ 目录下的 XML 和 SQLite 文件,下次 yum install 会自动触发重新下载
- 注意:yum clean expire-cache 不是独立清理动作,它只是标记元数据过期,真正删数据还得靠 clean metadata 或 clean all
清理后不重建缓存,下次 yum install 会明显变慢
执行 yum clean all 后,yum 不会自动补元数据。你得手动跑一次:
- yum makecache:同步并生成本地元数据索引(推荐加 --refresh 强制更新)
- 或者直接 yum install xxx:它会在安装前自动拉元数据,但首次操作会卡几秒到几十秒,取决于源响应速度
- 如果系统启用了 yum-cron,配置里没开 makecache = yes,那自动清理后也不会重建,这点容易被忽略
权限、路径和旧版兼容性问题
这些细节不处理好,命令看似成功,实际没删干净:
- 必须用 sudo 或 root 权限,否则提示 Permission denied 但不报错
- 缓存路径默认是 /var/cache/yum/$basearch/$releasever/,不同发行版子目录名可能带 cachedir 或 repos,clean all 能覆盖全部,但手动 rm -rf 容易漏
- RHEL/CentOS 6 及更老系统不支持 clean dbcache;DNF 用户请改用 dnf clean all,语法一致但底层行为略有差异
- yum clean <package_name></package_name> 是个伪功能:它不会按包名删缓存,实际行为等同于 clean packages,别信文档里这个误导项











