dnf clean 与 makecache 解决什么
dnf clean all 清空 /var/cache/dnf 下的元数据与已下载的包,dnf makecache 按当前 repo 配置重新拉取元数据。元数据损坏、镜像不同步、签名校验失败、换源之后,重建缓存是标准第一步。RHEL 8、CentOS 8/Stream、Rocky、Alma、Fedora 用 dnf;RHEL 7/CentOS 7 用 yum,8 系里 yum 是 dnf 的兼容入口,配置文件分别是 /etc/dnf/dnf.conf 与 /etc/yum.conf。
基本信息
| 适用平台 | RHEL/CentOS/Rocky/Alma/Fedora |
|---|---|
| 权限要求 | root(缓存目录写入与装包都需要) |
| 缓存目录 | /var/cache/dnf(7 系为 /var/cache/yum) |
| 仓库配置 | /etc/yum.repos.d/*.repo |
| 日志 | /var/log/dnf.log 与 /var/log/dnf.rpm.log |
典型使用场景
- 报 Failed to download metadata for repo:元数据损坏或镜像暂时不同步
- 新增或切换镜像源之后,让新配置立即生效
- 改过 baseurl、gpgcheck、exclude 等 repo 参数后刷新缓存
- 磁盘吃紧时清掉已下载的 rpm 释放空间
- 弱网机房提前预热元数据,缩短后续安装等待
常用示例
常用示例
dnf repolist -v # 先确认 repo 列表与其 baseurl 是否可达
du -sh /var/cache/dnf # 看缓存占用有多大,判断值不值得清
dnf clean all # 清元数据与包缓存,不影响已安装的软件包
dnf makecache # 按当前 repo 重建元数据
dnf makecache --refresh # 忽略缓存有效期,强制重新拉取
dnf repolist # 复核 repo 数量与包总数是否正常
dnf install -y nginx # 实装一个包做端到端验证clean 子命令怎么选
| 子命令 | 清掉什么 | 使用建议 |
|---|---|---|
| clean all | 元数据 + 包缓存 + dbcache 全清 | 缓存疑似损坏或换源后用;弱网环境重下成本高 |
| clean packages | 只清已下载的 rpm | 磁盘紧张时最安全的选择 |
| clean metadata | 只清元数据 | 一般无需手动执行,dnf 会按元数据有效期自动处理 |
| clean dbcache | repo 的 sqlite 解析缓存 | 元数据反复出错时可以一试 |
| makecache --refresh | 忽略有效期强制刷新 | 换源、镜像不同步后的首选动作 |
别用 rm 手工删 /var/cache/dnf,容易留下不一致的 dbcache 与错误属主,后续出现权限或元数据异常的假故障;统一走 dnf clean 子命令。
yum 与 dnf 在 8 系是同一个程序的两套入口:脚本里写 yum 在只装了 dnf 的最小化镜像上可能找不到命令,写 dnf 在 7 系则不存在。跨版本脚本先探测命令是否存在。
默认情况下 dnf 由 dnf-makecache.timer 在后台定期刷新元数据,手工 makecache 多用于换源或排障之后立即验证;如果元数据总在老化,先看这个 timer 是否被禁用。