软件源切不过去?
切换软件源后 yum 仍走旧源或找不到包的原因:旧源没禁用、缓存未清、baseurl 指错、新源与系统基线不一致,给切换验证步骤。
简短答案
“切不过去”几乎都是两种:旧仓库文件还 enabled 着,装包时旧源优先命中;或者切的新源与当前系统版本基线不一致(比如系统还在旧 SP 基线,却切了新版基线的源)。先确认”实际生效的是哪个源”,再谈切换。
现象对照表
| 现象 | 原因 |
|---|---|
| 包仍从旧源来 | 旧 repo 没改 enabled=0,或缓存未清 |
| 新源 404 / 目录不存在 | baseurl 指错,或新源要求的基线不同 |
| 新源有包但装不上 | 新源与系统基线不匹配(如跨 SP) |
| 部分包新旧混杂 | 新旧两个源同时 enabled,按优先级混装 |
排查步骤
# 看每个仓库实际取包地址与启用状态
yum repolist -v
# 确认某个包到底取自哪个源
yum install -y 包名 2>&1 | grep -i 'from'
# 切源标准动作:改配置 → 清缓存 → 重建
yum clean all
yum makecache
处理办法
- 禁用旧源:
yum-config-manager --disable 旧源名(或在 .repo 里直接enabled=0); - 基线不匹配:先
cat /etc/os-release读当前版本,与 服务器 V11 条目 的版本号对照,选与基线一致的源; - 切换前后各跑一次
yum repolist留档,出问题有据可查; - 需要整基线恢复时,介质取 银河麒麟镜像列表,按 Rufus 启动盘条目 写 U 盘。
操作小结
- 先
yum repolist -v看生效源,再动手; - 旧源必须显式禁用(删文件或 enabled=0);
- 改完必 clean + makecache;
- 跨版本基线切换前先对一遍 os-release。