首页/系统/信创系统运维速查/软件源健康巡检
命令与包管理65 条

软件源健康巡检

定期巡检各源可用性:逐个测试 repodata 元数据可达性,发现镜像失效或同步中断,避免装机与补丁时才发现源坏了。

信创系统运维速查系统更新于 2026-10-13

为什么要做源巡检

内网软件源(Yum/DNF、APT 镜像)是装机、打补丁、装依赖的唯一入口:一旦镜像同步中断、目录被清理或代理策略变更,问题往往到装包那一刻才暴露,而那时已经在交付窗口里了。源巡检就是把每个源逐个探测一遍,让坏源在动手之前就被发现。

基本信息

探测对象DNF 系:baseurl 下的 repodata/repomd.xml;APT 系:dists 索引
探测方式curl -s -o /dev/null -w '%{http_code}' -m 8 取状态码
执行时机源变更后、每周例行、重大交付前
输出要求源地址 + 状态码列表,留档便于逐次对比
权限要求普通用户即可

典型使用场景

  • 源地址调整或新增镜像后立即验证可用性
  • 每周例检,提前发现同步中断或目录被清理
  • 重大交付、批量装机前确认所有源健康
  • 内网镜像站与上游同步失败后的定性排查
  • aarch64 与 x86_64 双架构环境分别核对源

巡检脚本片段

巡检脚本片段
grep -rhE '^baseurl=' /etc/yum.repos.d/*.repo | cut -d= -f2 | sort -u   # 收集源地址
for u in $(cat /tmp/repo-urls.txt); do
  code=$(curl -s -o /dev/null -w '%{http_code}' -m 8 "$u/repodata/repomd.xml")   # 只测元数据文件
  echo "$code  $u"
done
dnf clean expire-cache && dnf makecache   # 清缓存重建,能暴露半同步的源
repoquery --repoid=<repoid> 2>/dev/null | head -3   # 元数据可解析性验证
apt-get update 2>&1 | tail -5             # APT 系核对索引拉取结果

状态码逐项判读

状态码含义处置
200元数据可访问正常,纳入基线
401/403凭据缺失或被代理白名单拒绝核对认证、代理与访问策略
404路径不存在,同步中断或目录被清理联系镜像提供方确认新路径
000超时或连接不通先查网络与 DNS,再判断是否源侧问题
curl 通一个 HTTP 首页不算源可用:必须测到 repodata/repomd.xml 这类具体元数据文件,并确认内容可解析,否则会出现「能访问但装不了包」的假阳性。
aarch64 与 x86_64 一般各自独立同步仓库与镜像站,巡检脚本要按架构分别跑;只测一种架构会漏掉另一种的坏源。

易错点

  • 只 ping 通就判定源正常:ping 只证明主机可达,与元数据是否同步完成无关
  • 巡检只覆盖外网源、漏掉内网镜像站:实际交付用的多是内网源,故障概率还更高
  • 不区分架构:ARM 与 x86 的仓库地址不同,一条命令只测了一半环境
  • 源变更后不做增量巡检:配置里一个字符写错,要等到装机时才暴露
  • 把源不可用当成本地故障反复重装环境:先看探测结果,先分清是源侧还是网络侧

数据来源与参考

  • dnf 仓库元数据说明
  • 运维巡检实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌