为什么要做源巡检
内网软件源(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 一般各自独立同步仓库与镜像站,巡检脚本要按架构分别跑;只测一种架构会漏掉另一种的坏源。