centos 7 不支持直接设置元数据更新频率,其刷新由访问触发且依赖硬编码的90分钟过期阈值;可通过 yum clean metadata && yum makecache 手动刷新,或用 touch repomd.xml、metadata_expire=never 等方式间接调控缓存有效期。

CentOS 7 不支持直接设置“软件库元数据更新频率”这个参数,它由 yum 自身行为和缓存策略隐式决定;你真正能控制的是“何时触发元数据刷新”以及“缓存保留多久”。
为什么 yum makecache 不按你预期的时间运行
yum 本身没有内置的定时器或 update_interval 这类配置项来控制元数据(repodata)下载频率。每次执行 yum check-update、yum install 或 yum update 时,yum 会先检查本地缓存是否过期——判断依据是 /var/cache/yum/*/repomd.xml 文件的 mtime(修改时间),默认过期阈值为 90 分钟(硬编码在 yum 源码中)。这意味着:即使你什么都没动,只要超过 90 分钟没用过 yum,下次调用就会自动重新下载元数据。
- 这个 90 分钟不可通过配置文件修改,它是 yum 的固定逻辑(CentOS 7 的 yum 版本为 3.4.x,无相关配置开关)
-
/etc/yum.conf中的metadata_expire仅对 yum-plugin-priorities 等插件生效,对基础元数据刷新无效 - 所谓“每天更新源”其实是误传——实际是每天运行
0yum.cron脚本,它调用yum -C check-update(-C 表示只用缓存,不刷新),所以并不触发元数据下载
想让元数据更频繁/更少刷新?只能靠绕过机制
如果你确实需要强制缩短或延长元数据刷新间隔,唯一可靠方式是干预 yum 的缓存文件时间戳或禁用自动检查:
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 强制立即刷新:运行
yum clean metadata && yum makecache——注意这不是“设置频率”,而是手动触发 - 延长缓存有效期(欺骗 yum):定期 touch 元数据文件,例如
find /var/cache/yum -name repomd.xml -exec touch {} \;,这样 yum 会认为缓存“刚更新过” - 彻底禁用自动刷新:在
/etc/yum.conf加metadata_expire=never(虽文档未明确支持,但在 CentOS 7 yum 3.4.3+ 实测有效),配合keepcache=1避免缓存被清空 - 若使用
yum-cron,它默认只做yum -C check-update,不会刷新元数据;要让它刷新,得在/etc/yum/yum-cron.conf里把download_updates = yes和apply_updates = yes都设为 yes,并确保没加-C参数(yum-cron 内部调用不带 -C)
yum-cron 的 update_interval 是个误导性参数
很多人以为 update_interval 控制元数据刷新,其实它只影响 yum-cron 进程自身的检查周期(即多久扫一次是否有新包),且该参数在 CentOS 7 默认的 yum-cron 3.4 版本中根本未被读取——代码里没实现。实际调度完全依赖系统级 cron:
-
/etc/cron.daily/0yum.cron是真正起作用的定时器,它每天固定时间运行(通常凌晨 3–5 点间随机) - 你改
/etc/yum/yum-cron.conf里的update_interval = 3600没用,除非你用的是第三方 patch 版或较新 EPEL 版本 - 想改频次?直接编辑
/etc/cron.daily/0yum.cron,或者用crontab -e添加自定义行,比如0 2 * * * /usr/bin/yum-cron --config /etc/yum/yum-cron.conf
真正需要关注的不是“频率数字”,而是你是否理解 yum 缓存的生命周期:它由访问触发、由时间戳判定、由配置间接影响。任何试图用单一参数“设成每天/每小时”的做法,在 CentOS 7 上都会落空。










