【信创实践】麒麟V10系统离线环境软件包获取与本地源搭建指南

📅 2026/7/14 6:01:41 👁️ 阅读次数 📝 编程学习
【信创实践】麒麟V10系统离线环境软件包获取与本地源搭建指南

1. 离线环境下的挑战与解决方案

在金融、政务等对安全性要求极高的场景中,麒麟V10服务器通常需要运行在物理隔离的离线环境。这种情况下,传统的yum install命令会直接失效,因为系统无法连接到外网软件源。我曾在某银行数据中心部署时遇到过这样的困境:一台关键业务服务器缺少libopenssl依赖包,而内网又没有任何可用的软件源。

离线环境的典型痛点包括:

  • 无法自动解决软件依赖关系
  • 安全补丁无法及时更新
  • 新软件部署效率低下
  • 多台服务器需要重复下载相同软件包

解决这些问题的核心思路是搭建本地软件仓库。这就像是在公司内部建立一个"软件超市",所有需要的安装包都提前存放在本地服务器上。具体实现需要三个关键步骤:

  1. 在能联网的机器上下载所需RPM包
  2. 使用createrepo命令创建仓库元数据
  3. 通过HTTP/FTP/NFS等方式共享给内网机器

2. 软件包获取实战技巧

2.1 确定系统版本信息

在开始下载前,必须准确知道系统版本。执行以下命令查看:

nkvers | grep "Build:"

典型输出示例:

Build: Kylin Linux Advanced Server release V10 (SP2) /(Sword)-aarch64-Build09/20210524

这里需要记录三个关键信息:

  • 大版本:V10
  • 小版本:SP2
  • 架构:aarch64(也可能是x86_64)

2.2 官方源地址解析

麒麟软件的官方源采用固定格式:

https://update.cs2c.com.cn/NS/[大版本]/[大小版本]/os/adv/lic/[仓库类型]/$basearch/Packages/

例如SP2版本的aarch架构基础源地址为:

https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/aarch64/Packages/

实用技巧

  • 浏览器访问时按Ctrl+F搜索包名
  • 优先在base源查找,找不到再去updates源
  • 下载时注意版本号匹配(通过rpm -q 包名查看已安装版本)

2.3 批量下载方法

对于需要大量软件包的情况,推荐使用repotrack工具(需先安装yum-utils):

# 下载单个软件包及其所有依赖 repotrack -a aarch64 -p ./packages nginx # 下载整个软件组 repotrack -a aarch64 -p ./packages @development

如果遇到网络中断,可以使用wget的断点续传功能:

wget -c -r -np -nH --cut-dirs=5 -R "index.html*" \ https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/aarch64/Packages/

3. 本地仓库搭建全流程

3.1 基础环境准备

选择一台内网可达的服务器作为仓库主机,建议预留至少100GB存储空间。安装必要工具:

# 安装HTTP服务和仓库工具 yum install -y httpd createrepo # 创建仓库目录结构 mkdir -p /var/www/html/kylin-v10/{base,updates,epel}

将下载的RPM包按类型放入对应目录:

  • 操作系统基础包 → base
  • 安全更新包 → updates
  • 第三方软件 → epel

3.2 生成仓库元数据

对每个目录执行:

createrepo -v /var/www/html/kylin-v10/base

更新仓库时添加--update参数:

createrepo --update /var/www/html/kylin-v10/base

重要参数说明

  • -v:显示详细处理信息
  • --workers=4:使用多线程加速(针对大型仓库)
  • --database:生成SQLite数据库便于快速查询

3.3 配置HTTP服务

修改Apache配置确保可访问:

# 设置目录权限 chmod -R 755 /var/www/html systemctl enable --now httpd firewall-cmd --permanent --add-service=http firewall-cmd --reload

测试访问:

curl http://localhost/kylin-v10/base/repodata/repomd.xml

4. 客户端配置指南

4.1 基础源配置

在需要使用的机器上创建repo文件:

cat > /etc/yum.repos.d/kylin-local.repo <<EOF [local-base] name=Kylin Local Base baseurl=http://[服务器IP]/kylin-v10/base enabled=1 gpgcheck=0 [local-updates] name=Kylin Local Updates baseurl=http://[服务器IP]/kylin-v10/updates enabled=1 gpgcheck=0 EOF

4.2 验证与使用

执行以下命令测试:

# 清除旧缓存 yum clean all # 生成新缓存 yum makecache # 测试安装 yum install -y --disablerepo="*" --enablerepo="local*" telnet

常见问题处理

  1. 如果出现Error: Unable to find a match,检查:

    • 仓库路径是否正确
    • 是否已生成repodata
    • 客户端架构是否匹配
  2. 遇到依赖循环时,可以手动下载并按顺序安装:

    rpm -ivh A.rpm B.rpm C.rpm --nodeps

5. 高级维护技巧

5.1 仓库同步策略

建议每周同步一次安全更新:

#!/bin/bash wget -c -np -r -nH --cut-dirs=5 -P /var/www/html/kylin-v10/updates \ https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/ createrepo --update /var/www/html/kylin-v10/updates

5.2 空间优化

使用hardlink节省空间(适用于多个仓库有相同包的情况):

cp -rl /var/www/html/kylin-v10/base /var/www/html/kylin-v10/security

5.3 增量更新

只下载新增的包:

rsync -avz --delete \ rsync://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/ \ /var/www/html/kylin-v10/updates/

6. 安全加固建议

  1. 访问控制:

    <Directory "/var/www/html/kylin-v10"> Require ip 192.168.1.0/24 </Directory>
  2. 定期校验包完整性:

    find /var/www/html -type f -name "*.rpm" | xargs rpm -K | grep -v "OK"
  3. 日志监控:

    tail -f /var/log/httpd/access_log | grep kylin-v10

在实际项目中,我曾用这套方案为某机构搭建了覆盖200+服务器的本地源体系,使软件部署效率提升80%以上。关键是要建立规范的包管理制度,建议设立专人负责仓库的审核与更新。