银河麒麟服务器离线部署实战:构建高效本地yum源
1. 为什么需要本地yum源在企业内网或安全隔离环境中服务器通常无法直接访问外部软件仓库。这时候本地yum源就像是你私人的软件超市所有安装包都存放在内网服务器上。我遇到过不少客户现场因为网络隔离导致连最基本的vim编辑器都装不上运维人员急得直跺脚。银河麒麟高级服务器V10SPX系列作为国产操作系统的代表其软件生态主要依赖官方ISO镜像中的安装包。实测下来搭建本地yum源后软件安装速度能提升5-10倍。特别是在批量部署时再也不用每台服务器都重复下载相同的安装包了。2. 准备工作获取正确的ISO镜像2.1 选择匹配的镜像版本首先得确认你的银河麒麟服务器版本。在终端执行cat /etc/kylin-release我见过有人拿着x86的镜像往ARM服务器上挂载结果当然是报错连连。V10SPX系列目前最新的是2024年4月发布的SP3版本文件名通常包含类似Kylin-Server-V10-SP3-2403-Release的字样。2.2 镜像传输注意事项把ISO文件放到/media目录时建议先用md5sum校验完整性md5sum Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso对比官网提供的校验值避免传输过程中损坏。如果是通过U盘拷贝最好用rsync带校验传输rsync -avh --progress /mnt/usb/镜像.iso /media/3. 挂载ISO镜像的完整流程3.1 创建挂载点别小看这个步骤挂载点的权限问题我踩过坑。正确的做法是sudo mkdir -p /media/cdrom sudo chmod 755 /media/cdrom # 确保所有用户都有读取权限曾经有次因为权限设成700导致yum命令执行时提示Permission denied排查了半天才发现问题。3.2 编辑fstab文件的关键细节用vim编辑/etc/fstab时新手常犯两个错误忘记加sudo导致保存失败写错ISO文件路径正确的写法应该是sudo vi /etc/fstab添加这行时要注意iso9660是光盘文件系统类型defaults包含rw,suid,dev,exec,auto,nouser,async等选项最后的0 0表示不备份且不检查文件系统3.3 挂载与验证执行mount -a后如果看到任何输出都是异常情况。我建议接着运行mount | grep cdrom应该能看到类似这样的输出/media/Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso on /media/cdrom type iso9660 (ro,relatime)特别注意要显示ro(只读)状态如果是rw状态说明配置有问题。4. 配置yum源的进阶技巧4.1 备份原有源文件移动原有repo文件时建议用带日期戳的备份cd /etc/yum.repos.d/ sudo mv kylin_aarch64.repo kylin_aarch64.repo.$(date %Y%m%d)这样以后需要恢复时能清楚知道备份时间点。4.2 编写repo文件的注意事项新建的kylin.repo文件中这几个参数很关键gpgcheck0 表示不验证软件包签名在内网环境可以关闭enabled1 必须明确启用该源baseurl中的file://前缀不能少我建议的完整配置[ks10-offline] name Kylin Server V10 SP3 Offline Repository baseurl file:///media/cdrom gpgcheck 0 enabled 1 priority 1 # 优先使用本地源4.3 缓存处理的正确姿势执行yum clean all后最好也删除旧缓存目录sudo rm -rf /var/cache/yum/*然后重建缓存时加上-v参数查看详细过程sudo yum makecache -v这个过程可能会持续2-5分钟取决于ISO镜像的大小。5. 验证与排错指南5.1 检查源列表用这个命令能看到所有可用的软件包yum repolist all正常应该显示类似repo id repo name status ks10-offline Kylin Server V10 SP3 Offline 3,2145.2 常见错误解决方案问题1报错Couldnt resolve host检查baseurl中的file://前缀确认/media/cdrom下有repodata目录问题2提示No package available运行sudo yum clean metadata重新挂载ISO镜像问题3依赖关系错误尝试sudo yum-complete-transaction或者sudo package-cleanup --problems5.3 性能优化建议对于需要频繁安装软件的环境可以考虑将ISO内容复制到本地硬盘sudo cp -r /media/cdrom /opt/kylin_repo sudo chmod -R 755 /opt/kylin_repo使用http服务提供yum源sudo yum install httpd sudo systemctl start httpd sudo ln -s /opt/kylin_repo /var/www/html/repo然后修改baseurl为http://localhost/repo6. 实际应用场景扩展6.1 批量部署方案在需要管理几十台服务器的场景可以用Ansible自动化- name: 配置本地yum源 hosts: all tasks: - name: 创建挂载点 file: path: /media/cdrom state: directory mode: 0755 - name: 添加fstab配置 lineinfile: path: /etc/fstab line: /path/to/iso /media/cdrom iso9660 defaults 0 0 - name: 挂载ISO command: mount -a6.2 软件仓库更新策略当有新版本ISO发布时推荐这样更新保持旧挂载点不变新建/media/cdrom_new挂载新ISO测试新源确认无误后修改repo文件指向新路径执行yum clean all yum makecache6.3 安全加固建议虽然在内网环境但仍建议定期校验ISO文件的完整性设置repo文件权限为644sudo chmod 644 /etc/yum.repos.d/kylin.repo重要服务器上保留gpgcheck1并导入公钥7. 高级技巧创建混合仓库如果需要同时使用本地和网络源可以配置优先级[ks10-offline] name 本地仓库 baseurl file:///media/cdrom priority 1 [ks10-online] name 官方更新源 baseurl http://archive.kylinos.cn/kylin/KYLIN-ALL/ priority 2 gpgcheck 1 gpgkey file:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin这样yum会优先使用本地源找不到的包再去网络下载。