麒麟Linux YUM源配置与缓存故障排查指南
1. 麒麟Linux YUM源配置基础
第一次接触麒麟Linux的YUM源配置时,我踩了不少坑。记得有次在客户现场部署系统,因为没提前配置好YUM源,导致一个简单的软件安装卡了整整两小时。后来才发现,麒麟Linux的YUM源配置和常见的CentOS有些不同,特别是在国内网络环境下,更需要特别注意。
麒麟Linux作为国产操作系统的代表,其YUM源配置主要涉及两个关键文件:
/etc/yum.repos.d/kylin_x86_64.repo(x86架构)/etc/yum.repos.d/kylin_aarch64.repo(ARM架构)
国内镜像源配置示例(x86架构):
[ks10-adv-os] name = Kylin Linux Advanced Server 10 - Os baseurl=http://update.cs2c.com.cn:8080/NS/V10/V10SP1/os/adv/lic/base/x86_64/ gpgcheck=0 enabled=1这个配置里有个细节特别重要:gpgcheck=0。刚开始我不理解为什么要关闭GPG检查,后来发现是因为部分国内镜像站的GPG密钥未正确配置。但生产环境建议开启校验(设为1)并配置正确的gpgkey路径。
2. 典型YUM源故障排查
2.1 repomd.xml下载失败问题
上周有个运维同事急冲冲跑来找我:"YUM报错说所有镜像都试过了还是下载失败!"一看果然是经典的repomd.xml错误:
failed to download metadata for repo 'ks10-adv-cdrom': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried排查步骤我总结为"四步法":
网络连通性测试:
curl -I http://update.cs2c.com.cn:8080/NS/V10/V10SP1/os/adv/lic/base/x86_64/repodata/repomd.xml如果返回404,说明源地址可能已变更
检查仓库配置:
yum repolist all # 查看所有仓库状态缓存清理(后面会详细讲):
yum clean all && yum makecache镜像站状态确认: 访问镜像站官网查看公告,比如麒麟软件官网会发布源地址变更通知
2.2 架构不匹配问题
有次给ARM服务器配置源时,误用了x86的配置,结果报错提示"找不到匹配的包"。这时需要特别注意:
- ARM架构的baseurl应包含
aarch64而非x86_64 - 配置文件应放在
kylin_aarch64.repo而非x86_64版本
3. 缓存处理深度解析
3.1 缓存机制原理
YUM的缓存就像快递柜:第一次取件(安装软件)需要去远处仓库,之后会暂存到本地。麒麟Linux的缓存目录默认在/var/cache/yum,包含:
packages/:下载的RPM包metadata/:仓库元数据
关键参数:
# 查看当前缓存配置 grep -E 'cachedir|keepcache' /etc/yum.confcachedir:缓存路径keepcache=0:默认不保留RPM包(建议改为1节省带宽)
3.2 缓存清理实战
遇到元数据不一致时,我常用的组合拳:
# 彻底清理 rm -rf /var/cache/yum/* yum clean all # 重建缓存(加-v参数看详细过程) yum makecache -v特别注意:在麒麟V10 SP2版本中,如果使用--downloadonly下载的包,需要手动清理/var/cache/yum/x86_64/[版本号]/packages/
4. 多源配置策略
4.1 国内主流镜像源对比
| 镜像站 | 地址 | 更新频率 | 特点 |
|---|---|---|---|
| 麒麟官方 | update.cs2c.com.cn | 每日 | 官方源,最稳定 |
| 清华大学 | mirrors.tuna.tsinghua.edu.cn/kylin | 每日 | 教育网优化 |
| 阿里云 | mirrors.aliyun.com/kylin-yum | 每6小时 | 全国CDN |
配置阿里云镜像示例:
[aliyun-kylin] name=Kylin Linux Aliyun Mirror baseurl=https://mirrors.aliyun.com/kylin-yum/V10/SP1/os/adv/lic/base/$basearch/ gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kylin-yum/RPM-GPG-KEY-kylin4.2 混合源配置技巧
生产环境中我常采用"主备源"策略:
- 主源用麒麟官方
- 备用源配置阿里云镜像
- 通过
priority参数设置优先级:priority=1 # 数字越小优先级越高
5. 特殊场景处理
5.1 离线环境配置
给某政府客户部署内网环境时,我总结出离线源搭建三步法:
在外网机器同步全量包:
reposync -r ks10-adv-os -p /data/kylin-repo/创建元数据:
createrepo -v /data/kylin-repo/ks10-adv-os/内网机器配置:
[local-kylin] name=Local Kylin Repo baseurl=file:///data/kylin-repo/ks10-adv-os enabled=1
5.2 代理服务器配置
在需要代理访问的环境(切记遵守公司网络政策),可以在/etc/yum.conf中添加:
proxy=http://proxy.internal.com:8080 proxy_username=user # 如果需要认证 proxy_password=pass6. 验证与测试
配置完成后,我必做的验证步骤:
基础检查:
yum search rpm-build # 测试搜索功能 yum install -y telnet # 测试安装速度测试(显示各镜像延迟):
yum-plugin-fastestmirror # 先安装插件 yum --enablerepo=* --refresh makecache依赖解析测试:
yum deplist python3
7. 日常维护建议
定期维护:
# 每周执行一次 yum clean all yum update空间监控(缓存可能撑满磁盘):
du -sh /var/cache/yum关键日志检查:
tail -n 100 /var/log/yum.log grep -i error /var/log/yum.log
记得有次凌晨三点被报警叫醒,发现是YUM缓存占满了/var分区。现在我会在Ansible剧本里加入定期清理任务:
- name: Clean yum cache cron: name: "Clear yum cache" minute: "0" hour: "3" job: "yum clean all"