资讯动态

银河麒麟系统软件源配置实战:在线源、本地源与离线部署

发布时间:2026/10/2 7:46:13 来源:尧图企业网站定制
先说一个很现实的情况你手里正好装好了一台银河麒麟系统可能是v10也可能是v11x86平台的还好如果是飞腾、鲲鹏这类ARM平台系统自带的源列表里往往一半地址都不能用想装个nginx都要折腾一下午。我第一次去现场维护银河麒麟就栽在“没配源”这件事上——系统几乎是个半哑状态yum命令找不到任何包最后只能靠U盘到处拷贝rpm包应急狼狈得很。这篇文章要聊的就是银河麒麟系统的“配置源”说白了一点都不玄乎把软件源、yum源、本地源、离线源这些东西一次性理清楚。看完之后你至少能独立完成在线源配置、离线源搭建、常见报错排查这三件事。适合谁看运维工程师、实施交付人员、还有单位里负责国产化终端维护的同事都能用得上。1. 关于“配置源”先搞明白到底在配什么1.1 什么是软件源为什么银河麒麟必须用它软件源在Linux世界里就是软件包的“货架”。无论是CentOS、Ubuntu还是银河麒麟系统安装完成后默认都带一个软件包管理工具银河麒麟服务器版用的是yum桌面版也兼容dnf指令。你敲一条yum install nginx系统会按照/etc/yum.repos.d/目录下配置文件里写的地址去对应服务器上拉取软件包和依赖然后自动完成安装。银河麒麟系统比较特殊它虽然基于Linux内核做适配但默认的源指向的是麒麟自己的服务器。问题在于不少单位部署银河麒麟时网络环境比较敏感要么服务器在内网访问不了外网要么系统版本过老默认源地址已经失效还有一部分ARM架构设备官方仓库里的软件包覆盖不齐全很多常用软件根本搜不到。这时候“配置源”就是绕不开的活了。本质上做三件事告诉系统去哪里找软件包把可用的 URL 写进 .repo 文件。让系统信任这个仓库包括 GPG 密钥校验。更新缓存让 yum/dnf 能感知到仓库里的软件列表。1.2 银河麒麟的版本和CPU架构决定了源怎么配我第一次给麒麟系统配源的时候就直接复制了网上CentOS的通用配置结果崩得很惨。后来才明白银河麒麟至少得先分清楚两件事系统版本和CPU架构。系统版本方面常见的银河麒麟服务器版是 V10后面可能带 SP1、SP2、SP3 这种小版本桌面版有 V10 和 V11。小版本不同仓库地址里面的路径可能就差一位数字但写错一个字母源就废了。CPU架构方面这是更多人忽略的点。银河麒麟适配的CPU五花八门架构常见CPU软件包后缀x86_64Intel、AMD、海光.x86_64.rpmaarch64鲲鹏、飞腾.aarch64.rpmmips64el龙芯.mips64el.rpmsw_64申威.sw_64.rpm同一个版本号的银河麒麟在 x86 和 ARM 上用的仓库地址后缀不一样。配置前用uname -m和cat /etc/kylin-release看清楚架构和版本这是最基础的一步也是先决条件。别嫌麻烦这一步做错后面所有操作全白费。2. 在线源配置手把手把 yum 源改到可用状态2.1 配置前的环境检查和备份在动任何配置文件之前先把系统当前状态摸清楚我的固定流程是这几条命令# 查看系统版本 cat /etc/kylin-release # 查看CPU架构 uname -m # 查看已有的repo文件 ls -l /etc/yum.repos.d/ # 测试是否能连通外网或指定镜像 ping -c 4 mirrors.example.com接下来很重要的一步备份原来的配置。有人觉得没必要但我见过太多人改了源之后想还原结果发现原始文件早被覆盖了只能重装系统。备份很简单一条命令sudo cp -a /etc/yum.repos.d /etc/yum.repos.d.bak-a参数会保留文件权限和属性还原时直接替换回去就行。这一步不会耽误你两分钟但能在你配错的时候救你一命。特别提醒如果系统里同时存在多个*.repo文件且配置内容互相冲突yum 在解析时会非常混乱常常会突然跳到某个仓库然后又报错。我个人的习惯是把系统自带的旧 repo 文件统一重命名先禁用掉只保留一个自己新建的可用 repo 文件。比如cd /etc/yum.repos.d/ sudo mkdir old-repos sudo mv *.repo old-repos/2.2 新建或修改 repo 文件的关键写法银河麒麟的 repo 文件格式上跟 CentOS 基本一个套路核心字段就是这几个baseurl、enabled、gpgcheck、gpgkey。以下是我在服务器版 V10 上经常用到的模板写法[ks10-adv-os] nameKylin Linux Advanced Server 10 - OS baseurlhttp://mirrors.example.com/kylin/KYLIN-Advanced-Server-10-$(arch)/OS enabled1 gpgcheck1 gpgkeyhttp://mirrors.example.com/kylin/KYLIN-Advanced-Server-10-$(arch)/OS/RPM-GPG-KEY-kylin字段的含义再解释一遍因为这个直接关系到后面报错排查[ks10-adv-os]方括号里是仓库ID必须唯一不能和其他仓库ID重复。name仓库的显示名称只起标识作用随便写但别留空。baseurl仓库路径是核心。$(arch)会被自动替换成x86_64或aarch64。enabled1表示启用该仓库。gpgcheck1开启GPG校验生产环境强烈建议开启防止二进制包被篡改。gpgkey校验用的公钥地址。写好之后先清除缓存再重建sudo yum clean all sudo yum makecache看到类似metadata cache created的输出就说明这个源基本通了。如果提示找不到 repomd.xml或者报404多半是 baseurl 的路径拼错了先把地址在浏览器里试着打开看能不能访问到repodata/repomd.xml这个文件。2.3 配置过程中的网络注意事项配在线源有个很现实的问题内网服务器域名解析经常有问题或者防火墙只开放了有限的端口。我遇到过一台机器明明能ping通yum源地址但yum下载时一直卡在连接阶段最后发现是防火墙只允许TCP 80端口而源的baseurl写成了https的443端口。这种情况要么在防火墙上加规则要么改用http源两选一就行。还有个小技巧如果用域名访问不了可以先试试IP地址能不能通因为不少内网环境DNS解析有问题curl -I http://192.168.1.10/kylin/repodata/repomd.xml能通的话直接把 baseurl 写成 IP 地址省事。但要注意IP地址一旦变化源又会失效建议在配置文件的注释里写清楚对应的主机名方便以后排查。3. 离线源和本地源没有外网也能装软件的底气3.1 用银河麒麟安装 ISO 做本地源在线源在网络环境好的情况下确实方便但很多部署现场真的是“三不通”不通外网、不通公网、内网都隔离。这时候最好的办法是直接拿银河麒麟安装镜像ISO做本地源。ISO里通常打包了最基础的软件包和依赖cover 日常装个nginx、vsftpd、jdk之类基本没问题。步骤如下先把ISO上传到服务器比如放在/data/iso/目录下然后挂载sudo mkdir -p /mnt/kylin sudo mount -o loop /data/iso/Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso /mnt/kylin确认挂载后/mnt/kylin下能看到repodata目录就可以创建本地repo文件了[kylin-local] nameKylin Local Repo baseurlfile:///mnt/kylin enabled1 gpgcheck0注意本地源一般建议把gpgcheck设为 0。因为ISO里的公钥可能不在系统信任列表里开启校验可能会报public key not available反过来卡住安装。做完之后刷新缓存sudo yum clean all sudo yum makecache sudo yum repolist使用本地源之后系统装软件速度快不占带宽还稳定。缺点是软件包版本相对固定不是最新的。如果想更新包还得拉官方源换新的ISO。3.2 内网搭建一台自己的 yum 仓库服务器如果单位里银河麒麟机器很多每台都挂ISO重做源浪费人力更专业的做法是搭建一台内网yum仓库服务器其他机器都指向它。仓库服务器上可以先挂载ISO然后用nginx或者httpd把/mnt/kylin目录共享出去。我记得最早在银河麒麟上装nginx也是踩了不少坑sudo yum install -y nginx sudo systemctl enable --now nginx然后把ISO目录软链到web根目录或者直接在nginx配置里加一个location指向挂载点。配置好之后内网其他机器上的repo文件baseurl写成baseurlhttp://repo-server-ip/kylin/KYLIN-Advanced-Server-10-$(arch)/OS这样所有机器只需要能访问这台仓库服务器就能同时安装软件包。如果后期需要加入更多外网软件包还可以用reposync工具把外网源里的包同步到本地再配合createrepo生成仓库元数据这就等于做了一个内网镜像源。3.3 离线部署场景下的 rpm 包集中管理除了本地源和仓库服务器还有一种情况是机器完全不能挂载ISO也不能访问内网仓库只能一个包一个包地拷贝。这时候我会在一台能联网的同版本银河麒麟机器上先把需要的软件包和依赖全部下载下来再批量拷贝到目标机器。下载依赖到本地目录的命令sudo yum install --downloadonly --downloaddir/data/rpms/ nginx如果目标机器已经装了一部分软件依赖情况不完全一样还可以用yumdownloader加--resolve参数把依赖也一并拉下来sudo yum install -y yum-utils sudo yumdownloader --resolve --destdir/data/rpms/ nginx拷贝到目标机器后直接sudo rpm -Uvh /data/rpms/*.rpm这种方法看着原始但在内网隔离极其严格的环境里反而是最靠谱的方案。我个人的习惯是安装完一批包之后在整个目录下运行一遍rpm -qa | grep确认版本号符合预期再继续下一步。4. 核心实操演示换源后的常见软件安装与配置4.1 用配置好的源安装 Nginx、Qt 等常用软件源配置好之后装软件就顺畅多了。以装nginx为例在线源安装只需要几条命令sudo yum install -y nginx systemctl start nginx systemctl enable nginx但在银河麒麟上有个常见坑nginx 装好后默认网站根目录在/usr/share/nginx/html而银河麒麟的SELinux如果启用了可能会拦截nginx访问其他目录导致页面403。遇到这个问题要么调整SELinux的布尔值要么在nginx配置里开着setsebool -P httpd_can_network_connect 1这种命令按需执行。这跟源配置关系不大但很多人刚配好源就卡在这一步顺手提一嘴。再比如安装Qt开发环境银河麒麟桌面版上经常有人搜“银河麒麟安装qt”。配置源之后操作就简单了sudo yum install -y qt5-qtbase qt5-qtsvg qt5-qttools如果源里没有某个Qt组件还可以用Qt官方在线安装器但内网环境离线安装器更靠谱。说到底源配置好的一大好处就是yum 会自动处理依赖你只需要准确告知系统要装什么包名不需要手动下载一堆 rpm。4.2 配置 Python 镜像源和 Docker 镜像源这两个“源外源”很多人刚开始只想到给系统配置 yum 源后来在银河麒麟上用 Python 写脚本发现pip install慢得怀疑人生或者想用 Docker 拉镜像发现官方仓库动不动就超时。这其实也是“配置源”的范畴只是配的不是 yum 源而是应用层的镜像源。Python 的 pip 换国内镜像源一行命令搞定pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple如果用的是 pip3就执行pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple配置文件会写到~/.config/pip/pip.conf之后 pip 安装就走镜像地址了。注意银河麒麟系统自带的Python版本可能不高用 pip 安装包时如果遇到依赖中的编译错误建议优先在源里找现成的rpm包比如python3-devel。Docker 的镜像加速配置主要在/etc/docker/daemon.json可以写入多个加速地址{ registry-mirrors: [ https://docker.mirrors.example.com ] }写完重启 Dockersudo systemctl daemon-reload sudo systemctl restart docker然后docker info看一下确认镜像加速地址已经生效。这个是给有外网访问权限的机器准备的如果是纯内网更合适的是部署一套 Docker Registry 私有仓库内网机器统一从私有仓库拉取镜像。4.3 源码编译安装的“隐性依赖”也靠源解决银河麒麟上有些软件实在没有现成的rpm包只能源码编译安装比如某些国产中间件。源码编译最痛苦的是缺依赖库比如常见的gcc、make、zlib-devel、libffi-devel。配置好源之后直接用yum把这些基础依赖一次性拉齐sudo yum groupinstall -y Development Tools sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make编译安装之前先配好源能省下大量手工找依赖的时间。我有一次编译一个Python模块缺了四个开发包在没配源的环境里挨个找rpm花了半天后来换了有源的机器两分钟装完依赖。5. 配置源后的常见问题排查与避坑5.1 报错 “No more mirrors to try” 或 “Cannot find a valid baseurl”这是yum家族最经典的报错也是银河麒麟上最容易见到的。出现这个错误通常不是仓库服务器挂了而是 baseurl 路径配错了。排查顺序第一先用浏览器或者 curl 手动访问一下 baseurl 地址看看repodata/repomd.xml是否真实存在。第二确认路径里的架构变量$(arch)是否被正确解析成了目标架构。第三确认系统小版本比如 V10 和 V10 SP2 的路径可能不同报404就换个版本路径试试。还有一种隐藏情况服务器能解析域名但出口封了 80 端口或者只开放了 443。用curl测试的时候能看到超时信息而不是404。这个时候就得跟网络管理员确认端口策略。5.2 GPG 密钥校验失败怎么处理才安全gpgcheck1时如果仓库公钥不在本地信任列表yum 会报Public key for xxx.rpm is not installed或GPG check FAILED。多数情况下可以手动导入公钥sudo rpm --import http://mirrors.example.com/kylin/RPM-GPG-KEY-kylin如果导入之后仍然报错可能是 rpms 的签名和这个公钥不匹配也可能是下载的包损坏。生产环境我不建议直接关闭 gpgcheck但如果内网仓库本身就是自己建的而且网络环境可控那么将自建仓库的gpgcheck设为 0 是常见做法。自己搭的仓库包的来源和完整性都掌握在手里没必要非要验证签名。5.3 清缓存、换源的时机很重要改了 repo 文件之后一定要执行sudo yum clean all sudo yum makecache顺序不能反。如果只 clean 不 makecache下次安装时系统依然读旧缓存结果什么都搜不到运行还很慢。还有不要频繁在多个源之间切换尤其是不要同时启用多个指向不同版本系统的源仓库目录版本一混依赖解析会非常痛苦最后可能装出一个什么包都缺一半的“夹生”系统。5.4 银河麒麟 ARM 源包里文件缺失怎么办ARM架构下很多常用软件在官方仓库里确实没有。遇到这种情况最稳妥的办法是到软件官网找对应的aarch64安装包或者用接近的发行版源做临时补全。但是要非常谨慎跨发行版强行装包极易破坏依赖关系终极方案还是用源码编译。比如aarch64环境安装 zerotier 这种网络工具仓库里没有就只能用官方提供的二进包或者编译安装这也是银河麒麟生态还不够完善的现实。5.5 普通用户安装软件权限不足的问题银河麒麟系统和所有Linux一样安装软件需要使用root权限。可以用sudo方式也可以直接切到root用户。如果你在非root用户下执行yum install得到You need to be root to perform this command这是正常的不是系统坏了。处理方式是用sudo yum install或者如果你知道root密码的话直接su -切过去。要是连root密码都忘了这个也常有人问。银河麒麟系统可以进单用户模式重置root密码重启时在GRUB菜单按提示进入应急模式然后挂载根分区并执行passwd root修改密码。这块操作风险不小建议只在测试机上练习生产环境最好提前留好root和管理员密码。6. 关于银河麒麟配源的几点掏心窝子建议这几条经验是我在给银河麒麟系统做实施维护时一点点攒下来的写在这里当作收尾建议一把原始配置文件备份保留三个月以上。银河麒麟的仓库地址偶尔会有调整如果你把原始repo全删了后续升级维护时想恢复默认配置就很麻烦。建议二配置完源之后立刻做一次yum repolist和yum makecache并记录下来输出结果。我习惯把每次配置源的时间、版本、架构、baseurl地址记成一个简单表格方便出问题时回溯。现场实施时这些记录也是交接给下一任运维的重要资料。建议三谨慎使用网上搜来的“一键源配置脚本”。不是说脚本不能用而是脚本往往内置了固定的路径和公钥不一定匹配你的系统小版本。我的习惯是脚本只用来做参考实际改动一定自己过一遍确认每条命令的作用。建议四离线环境要建立自己的rpm库存档。这年头谁都不确定网络策略哪天会收紧我在项目实施时只要有机器配好源、装完所需软件就会把装过的包和依赖整理到内网仓库服务器上。长远来看这个动作能让你在后期维护中从容很多。建议五多试几个可用的上游镜像但不要同时启用。同一个源地址访问不了换一个镜像地址可能就好了。改repo文件时把其他镜像地址注释保留在文件底部以后切换只需要取消注释即可不用重新拼配置。银河麒麟的源配置说难不难说简单也会踩不少坑。只要抓住“版本、架构、baseurl、GPG校验”这四件事再把在线源、本地源、离线rpm包这几条路都跑通日常的软件安装维护基本就稳了。希望这篇内容能帮你少走点弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑