换源换的是什么
软件源的行为由 .repo 文件里的 baseurl、enabled、gpgkey 决定,换镜像站本质就是把这几个地址指到新位置。切换的难点不在改文件,而在两件事:镜像站与当前发行版版本、补丁级别是否严格对应,以及同步是否完成。改完必须清缓存重建,否则 dnf 还在用旧源留下的元数据。
基本信息
| 配置文件 | /etc/yum.repos.d/*.repo |
|---|---|
| 关键字段 | baseurl(或 mirrorlist)、enabled、gpgcheck、gpgkey |
| 标准步骤 | 备份 → 改 baseurl → clean all → makecache → 装小包验证 |
| 查看生效 | dnf repolist -v |
| 回退方式 | 还原备份目录并再清一次缓存 |
| 影响范围 | 所有使用该源的主机,批量环境建议用配置管理统一下发 |
典型使用场景
- 外网源访问慢或不可达,切到单位内网镜像站
- 从互联网环境迁到隔离网,源地址必须全部改为内网地址
- 镜像站迁移机房或更换域名,需要批量更新客户端配置
- 测试镜像站同步是否完整,为后续批量切换做验证
- 临时排障时把单台机器切回官方源,确认问题是否出在镜像站
操作示例
操作示例
cp -a /etc/yum.repos.d /etc/yum.repos.d.bak.$(date +%F) # 先整体备份,回退时省事
sed -i 's|^baseurl=http://update.example.cn|baseurl=http://mirror.intra.local/kylin|' /etc/yum.repos.d/*.repo
grep -R '^baseurl' /etc/yum.repos.d/ | head # 逐条确认改后的地址
dnf clean all && dnf makecache # 清旧缓存并重建元数据
dnf repolist -v # 看包数量与原源是否相当
dnf install -y tree # 装个小包做端到端验证回退与证书处理
回退与证书处理
cp -a /etc/yum.repos.d.bak.$(date +%F)/*.repo /etc/yum.repos.d/ # 还原原源文件
dnf clean all && dnf makecache # 还原后同样要清缓存
# 镜像站换域名或启用 HTTPS 时,gpgkey 与代理白名单要同步更新
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}\n' # 确认签名公钥仍在
grep -R 'gpgkey' /etc/yum.repos.d/ | head # 核对 gpgkey 指向新地址切换后验证清单
| 检查项 | 期望结果 | 异常含义 |
|---|---|---|
| dnf repolist -v | 各仓库 enabled 且包数与原源接近 | 包数明显偏少说明镜像同步未完成 |
| dnf makecache | 正常完成无报错 | 报证书或 404 说明地址或证书有问题 |
| 装一个小包 | 依赖解析顺利、安装成功 | 只报找不到包说明元数据没刷新 |
| grep gpgkey | 指向新镜像或本地公钥目录 | 遗漏会造成后续安装随机报 NOKEY |
| 业务时段重启影响 | 无异常 | 换源本身不影响运行服务,重启才可能触发更新 |
镜像站与官方源之间同步存在延迟:同一天在镜像上装不到最新补丁属正常现象,需要最新补丁时临时切回官方源验证。
镜像站一般建议与发行版及补丁级别一一对应(如 Kylin V10 SP3 单独一个目录),跨级别混用会出现依赖解析冲突。