centos 7 没有全局“软件源更新频率”配置,yum 不主动轮询源,仅在执行命令时按需读取元数据;缓存默认无 ttl,需手动运行 yum clean metadata && yum makecache 或启用 yum-cron 实现每日自动检查与更新。

CentOS 7 没有全局“软件源更新频率”这个配置项——yum 本身不主动轮询源,它只在你执行命令时按需读取元数据;所谓“更新频率”,实际是指 yum makecache 生成的本地元数据缓存何时失效、是否自动刷新、以及是否启用后台自动检查机制。
为什么 yum makecache 不会自动定时运行
yum 是请求驱动型工具:不执行命令,就不拉元数据。它的缓存(存于 /var/cache/yum)默认没有 TTL 机制,也不会因时间推移自动过期。也就是说,除非你手动运行 yum clean all && yum makecache,或依赖 yum-cron,否则旧缓存会一直用下去,哪怕源站元数据已更新数天。
- 常见错误现象:
yum install找不到新发布的包,或提示No package XXX available,但该包明明已在镜像站上线——本质是本地元数据没刷新 - 根本原因:缓存文件(如
primary.xml.gz)被持久保留,yum默认跳过校验直接读取 - 注意:
yum.conf中的keepcache=1只控制 RPM 包文件是否保留,不影响元数据缓存的时效性
用 yum-cron 实现每日元数据检查与可选自动更新
这是 CentOS 7 官方推荐的自动化方案,核心是让系统每天主动执行 makecache 并(可选)下载/安装更新。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
- 安装服务:
yum install yum-cron - 编辑主配置:
/etc/yum/yum-cron.conf - 关键参数:
-
update_cmd = security或default:决定检查范围(仅安全更新 or 所有更新) -
update_interval = 1:单位为天,表示每天检查一次元数据并触发makecache -
download_updates = yes:下载新 RPM 包到缓存目录(不安装) -
apply_updates = no:默认关掉;设为yes会自动安装,生产环境慎用
-
- 启用服务:
systemctl enable --now yum-cron - 验证是否生效:
systemctl status yum-cron,再查日志journalctl -u yum-cron -n 20
手动强制刷新元数据的可靠方式
当发现源已更新但本地没同步时,必须清除旧元数据并重建,不能只靠 yum makecache。
- 标准流程(缺一不可):
- 先清空:
yum clean metadata(比clean all更精准,只删元数据,不碰已下载的 RPM) - 再重建:
yum makecache(从当前配置的 repo 拉取最新repomd.xml和primary.xml.gz)
- 先清空:
- 不要用
yum clean all && yum makecache:它会删掉所有 RPM 缓存,后续安装可能重复下载 - 如果
makecache卡住或报错,检查/etc/yum.repos.d/下是否有启用了但不可达的 repo(比如已停服的 epel),临时注释掉再试 - 验证缓存是否更新成功:
ls -lh /var/cache/yum/x86_64/7/base/metadata/,看primary.xml.gz修改时间是否为当前日期
镜像源本身不提供“推送式更新”,全靠客户端主动拉取
国内镜像站(阿里云、清华、网易)不会主动通知你的机器“我更新了”,它们只是静态 HTTP 服务。所以所谓“更新频率”,完全取决于你本地是否定期执行元数据拉取动作。
- 误操作风险:有人以为改
/etc/yum.conf的cachedir或加max_age就能控制频率——yum根本不识别这些参数,那是apt或 HTTP 客户端的逻辑 - 真实影响点只有两个:是否启用
yum-cron,以及手动执行makecache的频次 - 如果你用 Ansible/Chef 等编排工具,建议把
yum clean metadata && yum makecache写进部署前的 playbook,避免因缓存陈旧导致安装失败










