ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

麒麟Kylin V10系统yum源更换教程:从阿里云到本地源全攻略

2026/9/16 1:29:33 拓冰建站 浏览量
麒麟Kylin V10系统yum源更换教程:从阿里云到本地源全攻略 不用我说你也知道Linux 系统装完之后最闹心的就是软件源慢。尤其是刚装完麒麟 KylinV10 系统兴致勃勃想装个 Nginx 或者 Docker结果yum install卡在那里半天没反应最后直接来个下载超时那一刻真的想把屏幕拍烂。我之前在给客户部署服务器时就踩过这坑默认官方源的服务器节点在国内访问并不稳定高峰期下载速度能跌到几十 KB/s装个编译器都像在拉老牛车。这篇文章就专门来解决这个问题。我会从麒麟 V10 的“血统”讲起把一个源从官方切换到第三方仓库的全流程掰开揉碎一步步带你走完备份、换源、清缓存、验证顺手把 EPEL 扩展仓库和离线本地源这些进阶玩法也安排上。整个过程不玩虚的每条命令我都会解释为什么这么写你跟着做就行。不管你是要给生产环境换源还是自己在虚拟机里折腾这套方法都适用保证让你少踩几个坑一次搞定。1. 动手之前先弄清麒麟 V10 的“血统”再决定怎么换源1.1 为什么麒麟 V10 可以换源而且能和 CentOS/RHEL 的仓库兼容很多人一开始就蒙圈麒麟系统不是国产操作系统吗它换源是不是只能换国产源其实不是。银河麒麟服务器版 V10 的内核和基础软件包体系跟 RHEL/CentOS 8 高度兼容它使用的是 RPM 软件包管理格式底层默认走的是 dnf/yum 这套机制。这意味着只要是符合 RHEL 8 规格的 yum 仓库麒麟系统都能直接接入使用。这背后的原理其实很好理解yum 源的本质就是一个带元数据索引的 HTTP/FTP 文件服务器里面放着 rpm 包和 repodata 目录存的是包的元数据和校验信息。系统在安装软件时会去源里拉取 repodata对比本地缓存然后下载对应的 rpm 包进行依赖解析和安装。只要包格式一致、目录结构符合规范仓库地址放在哪、由谁维护其实并不关键。所以给麒麟 V10 换源本质上就是换一个“包下载地址”。我们既可以用国内大厂维护的第三方镜像仓库也可以用自己内网的 HTTP 服务器或本地 ISO 挂载路径。唯一要小心的是仓库的系统版本匹配问题——麒麟 V10 的$releasever变量可能被解析成V10而 CentOS 源用的是8如果直接套用 CentOS 的 repo 文件很可能出现路径 404 的情况。这个坑我会在后面专门讲怎么绕开。1.2 换源前必备的三项检查和环境确认在动手换源之前先花两分钟确认自己手上的系统版本和架构。不同架构对应的 baseurl 路径不同弄错了后面白折腾。下面是保姆级检查命令直接抄# 查看系统版本信息 cat /etc/os-release # 查看内核架构x86_64 还是 aarch64 uname -m # 查看当前已经配置了哪些 yum 源 yum repolist cat /etc/yum.repos.d/*.repo 2/dev/null | head -50我建议你重点看三个东西VERSION是不是V10或带 SP 小版本、uname -m返回的是x86_64还是aarch64、以及/etc/yum.repos.d/目录下默认有哪些.repo文件。麒麟 V10 服务器版默认的 repo 文件通常叫kylin_x86_64.repo、Kylin-Server-10.repo或者类似的名称里面配置的是系统自带的官方软件源。另外确认一下网络连通性。先 ping 一下公网地址再试一下能不能访问镜像站ping -c 4 mirrors.aliyun.com curl -I --connect-timeout 5 https://mirrors.aliyun.com/这一步能帮你区分“源慢”和“机器根本就没联网”这两种情况省得后面排查问题的时候把时间浪费在错误方向上。1.3 备份官方源配置给自己留条后路换源前第一件事不是改文件而是备份。系统自带的官方源虽然慢但它是经过麒麟官方测试验证的万一你换的第三方源在某个包上出现兼容性问题至少还能一键切回官方源不至于让服务器瘫在那里。备份命令很简单mkdir -p /etc/yum.repos.d/bak cp -r /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ ls /etc/yum.repos.d/bak/如果你想做得更彻底一点也可以把整个/etc/yum.repos.d/目录直接压缩备份tar czvf yum.repos.d.bak.tar.gz /etc/yum.repos.d/备份完以后我会建议你先把默认的官方源文件移到一个临时目录里避免第三方源和官方源混在一起出现“同一个包多个源都在提供”的冲突提示。后面验证没问题了你再看是不是需要恢复部分官方源。2. 第三方仓库怎么选阿里云、清华、中科大源横向对比2.1 几个主流镜像站的仓库地址速查国内大大小小的 Linux 镜像站不少但对于麒麟 V10 这种兼容 CentOS/RHEL 8 的系统我实际用过比较稳的就这几家阿里云、清华 TUNA、中科大 USTC。它们的共同点是带宽大、同步频率高、在国内大部分运营商网络下速度都能跑满。镜像站麒麟仓库地址适用网络环境备注阿里云https://mirrors.aliyun.com/kylin/KYLIN-V10/全国通用带宽充足有专门的麒麟目录路径清晰清华 TUNAhttps://mirrors.tuna.tsinghua.edu.cn/kylin/KYLIN-V10/教育网骨干高校网络优先镜像同步非常及时中科大 USTChttps://mirrors.ustc.edu.cn/kylin/KYLIN-V10/教育网和电信网络都很快稳定性不错历史久除了上面这三个腾讯云、华为云也有自己的镜像站如果你正好在那朵云上买了服务器用同云厂商的镜像源其实是最优解因为走内网流量不消耗公网带宽下载速度直接起飞。2.2 官方源为什么慢第三方镜像站的优势到底在哪一句话解释官方源服务器通常部署在核心机房对国内的网络优化不够。你的服务器发起的每个请求都要跨运营商跳转中途还可能经过国际链路延迟高、丢包率也不小。国内镜像站则不同它们一般在国内多个 IDC 有节点走的是 BGP 多线接入各地访问体验都相对均衡。更重要的是镜像站不只是“帮你下载快”它们有完整的同步机制。比如阿里云每天会定时从上游仓库拉取最新的 rpm 包和 repodata 元数据你在镜像站上看到的其实是一个“快照副本”。对于日常装软件、更新补丁来说这个快照的实时性完全够用比你直连官方源却慢到吐血要舒服得多。我在实际使用中还会优先选阿里云因为它除了提供麒麟仓库还同时维护了 EPEL 仓库方便后面配置扩展源。如果一次性把base、epel都指向同一个镜像站还能减少不同源之间的网络差异排查问题的时候也简单很多。2.3 不同应用场景的选源建议生产服务器建议优先选阿里云源或者如果你服务器本身就在阿里云/腾讯云上直接选云厂商内网镜像源。这类源稳定性和带宽都有保障出问题也好找客服。开发测试虚拟机清华 TUNA、中科大 USTC 都可以速度和同步频率都在线日常装包足够用。教育网内网环境清华 TUNA 或者中科大 USTC 优先它们在教育网内有节点部分场景甚至能走 IPv6速度更快。无法连外网的内网/离线环境这时候只能做本地源用 ISO 文件或者内网 HTTP 服务器来搭我在第 6 章单独展开讲。3. 手把手实操把官方源换成阿里云源3.1 查看当前 repo 文件确认官方源的写法换源之前先看看官方 repo 文件的格式这样你后面写第三方源的时候有参考。执行下面的命令cat /etc/yum.repos.d/kylin_x86_64.repo如果文件名不一样用ls /etc/yum.repos.d/先看一下目录里有什么。典型的官方仓库内容大概是这样的[kylin] nameKylin Linux $releasever - Official baseurlhttp://archive.kylinos.cn/kylin/KYLIN-V10/$basearch/ gpgcheck1 enabled1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin注意看baseurl和gpgkey这两个字段。前者是仓库的实际下载地址后者是公钥文件路径。不同版本的麒麟文件路径可能略有区别你以实际输出为准但大致结构就是这样的。3.2 备份并清理原 repo 文件上一步看完了接下来就把官方源的文件移出去。我不建议直接删因为你后续可能还想留一个官方源做备用。稳妥做法是移到一个独立目录mkdir -p /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/移完以后再确认一下目录里只剩bak子目录没有别的.repo文件ls -la /etc/yum.repos.d/这一步的目的是避免新旧源混用。如果不做清理就直接添加新源yum repolist里会同时出现官方源和第三方源万一同一个软件包在两个源里版本不同、优先级不同安装时就会出现“多个包提供同一依赖”的报警徒增烦恼。3.3 写入阿里云源配置现在创建新的 repo 文件。用vi或者vim都行文件名我习惯起得一眼就能认出来就叫aliyun-kylin.repovim /etc/yum.repos.d/aliyun-kylin.repo文件内容如下直接复制进去[kylin] nameKylin Linux V10 - Aliyun baseurlhttps://mirrors.aliyun.com/kylin/KYLIN-V10/$basearch/ enabled1 gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin这里有几个地方我要解释一下因为后面报错大多数都出在这些细节上第一$basearch变量会自动替换成x86_64或aarch64这个不用你手动改。但我建议你写完以后用下面的命令实际展开看看路径到底对不对python3 -c import yum; print(yum.YumBase().conf.yumvar[basearch])不过更直观的办法是直接用浏览器或 curl 打开https://mirrors.aliyun.com/kylin/KYLIN-V10/x86_64/看这个目录到底存不存在有没有repodata子目录。第二gpgkey指向本机公钥文件。如果系统里没有这个文件后面执行yum makecache时就会报Public key for xxx.rpm is not installed的错误。检查一下ls -l /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin如果文件不存在可以从镜像站下载后导入。命令是curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin https://mirrors.aliyun.com/kylin/KYLIN-V10/RPM-GPG-KEY-kylin rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin3.4 清理缓存并生成新缓存配置写完之后一定要执行缓存清理。这是很多人换源之后依然碰到旧源报错的关键原因——本地已经缓存了官方源的 repodata 元数据yum 在解析时优先读缓存结果还在访问旧地址。命令如下yum clean all yum makecache执行过程中如果看到类似Metadata cache created或Last metadata expiration check的输出说明新源已经生效。如果碰到报错先别慌绝大多数情况下就是第 3.3 节里的路径或者公钥问题第五章我会把所有高频报错集中列出。3.5 验证新源是否生效缓存生成完毕后做一轮基础验证。先用下面的命令看仓库列表yum repolist正常输出会包含kylin这一条状态显示启用。然后随便装个常用的软件包试试水比如htop或者wgetyum install -y htop如果安装过程流畅、速度明显提升那恭喜你换源这一步就大功告成了。另外再用yum list available | wc -l统计一下源里可用包的数量做到心里有数。4. 进阶操作挂上 EPEL 扩展仓库并设置优先级避免依赖冲突4.1 麒麟 V10 为什么还需要 EPEL 源麒麟官方源里的软件包走的是“基础稳定”路线收录的包以系统组件和常用服务为主。但实际工作中你会发现很多常用软件在官方源里没有或者版本旧得让人想骂人。比如装htop、tree、jq、python3-pip这类小而美的工具官方源可能不全这时候 EPEL 仓库就派上用场了。EPELExtra Packages for Enterprise Linux是红帽系发行版的一个社区维护扩展仓库里面收录了大量 RHEL/CentOS 官方源之外的软件包对系统兼容性也做了测试。因为麒麟 V10 和 RHEL 8 生态兼容所以epel-8的包在麒麟上用基本没问题。注意这里我推荐的是 EPEL 8因为麒麟 V10 服务器版对应的是 RHEL 8 体系不是 7搞错了会导致依赖解析失败。4.2 手动配置阿里云的 EPEL 仓库麒麟官方源可能没有epel-release这个包所以最靠谱的办法是手动写 EPEL 的 repo 文件。镜像站选阿里云和 base 源保持一致vim /etc/yum.repos.d/epel-aliyun.repo写入如下内容[epel] nameEPEL for RHEL 8 - Aliyun baseurlhttps://mirrors.aliyun.com/epel/8/Everything/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8这里的一个小细节是我把$releasever直接写成了固定的8。因为麒麟的/etc/os-release里VERSION_ID不是8如果baseurl里写$releaseveryum 展开后路径会变成epel/V10/...而这个目录在镜像站上根本不存在必然 404。想省心的话所有跨发行版的仓库配置都把版本号写死这是我从实践中总结出来的血泪教训。写完后同样执行yum clean all yum makecache然后跑一下yum repolist确认新增的epel仓库已经启用。4.3 用 priorities 插件让 base 源优先防止依赖版本覆盖同时启用官方/第三方 base 源和 EPEL 源后最怕发生的事就是同一个软件包在两个源里都有yum 在解析依赖时选了一个版本装完以后系统行为和我们预期不一致。解决这个问题的标准做法是给源设置优先级。在 dnf/yum 体系下需要安装优先级插件yum install -y yum-plugin-priorities如果是 dnf 后端也可以装 dnf 的对应插件yum install -y dnf-plugin-priorities装完之后在/etc/yum.repos.d/下的每个 repo 文件末尾加一行priorityN。N 数字越小优先级越高。比如我希望kylin源里的包优先于 EPEL 源就分别在两个文件里加# aliyun-kylin.repo [kylin] nameKylin Linux V10 - Aliyun baseurlhttps://mirrors.aliyun.com/kylin/KYLIN-V10/$basearch/ enabled1 gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-kylin priority1# epel-aliyun.repo [epel] nameEPEL for RHEL 8 - Aliyun baseurlhttps://mirrors.aliyun.com/epel/8/Everything/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8 priority99设置完以后yum 在遇到同一个软件包时会优先从kylin源里找只有kylin源里没有才会去epel源找。这样一来既能保证系统核心组件按官方源版本更新又能享受 EPEL 源里丰富的软件包两全其美。4.4 用一个小测试验证优先级配置配置完了咱们验证一下。用yum info查看某个同时在多个源里存在的包优先级的差别会直接反映在选择上。比如python3-pip如果在两个源里都有你可以执行yum --showduplicates list python3-pip如果输出里只显示来自kylin源的版本说明优先级已经生效。如果一个包只在 EPEL 里有那它会正常走 EPEL也不会受影响。做完这步你的 yum 源环境就算基本成型了。5. 常见问题排查从 404 到 gpg key 失败的现场实录5.1 “404 Not Found” 的前因后果这个报错在换源时出现的频率最高。先复制一段我在一台麒麟 V10 服务器上实际看到过的错误Errors during downloading metadata for repository epel: - Status code: 404 for https://mirrors.aliyun.com/epel/V10/Everything/x86_64/repodata/repomd.xml看到V10这个字段你就知道问题出在哪了baseurl里用了$releasever而麒麟系统的$releasever解析出来不是8而是V10导致路径变得不伦不类。解决办法也很简单把 repo 文件里的$releasever换成对应的数字版本或者干脆写死完整路径。另外还有一种 404 情况是因为你的系统架构是aarch64但镜像站当前还没同步完整的 arm64 目录或者目录名不叫aarch64而叫arm64。遇到这种情况最好先浏览器打开镜像站根目录把目录树结构看一遍再写 baseurl比瞎猜快得多。5.2 repomd.xml 下载失败该往哪个方向查repomd.xml是 yum 仓库的索引文件几乎每个源路径下都有。报错常见形式是Cannot download repomd.xml: Cannot download repodata/repomd.xml排查方向按顺序来先确认一下源路径在浏览器里能不能打开看目录是否存在确认 DNS 能不能正常解析镜像站域名nslookup mirrors.aliyun.com确认防火墙或安全组有没有封 443 端口确认 curl 能否正常访问源地址curl -I https://mirrors.aliyun.com/。大部分时候问题出在第 1 和第 2 项。如果 curl 都访问不到那就是网络层面的问题换源本身解决不了得先把网络打通。5.3 GPG 公钥导入失败报错提示通常长下面这样The downloaded RPM was not signed or has an invalid signature Public key for xxx.rpm is not installed这种情况要么是你gpgcheck1但本地没导入对应公钥要么是仓库地址和公钥不匹配。解决步骤# 查看系统已导入的 gpg key rpm -qa gpg-pubkey* # 从镜像站手动下载公钥并导入 curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8 https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8导入完以后重新yum makecache基本就能消掉这个报错。如果实在不想折腾又是在内网测试环境也可以把gpgcheck1临时改成gpgcheck0但生产环境我不建议这么干毕竟包签名校验是软件供应链安全里很重要的一环。5.4 makecache 反复失败缓存脏数据怎么处理有时候你明明配置没问题但yum makecache就是报错而且报错信息指向旧的仓库地址。十有八九是本地dnf缓存里残留了旧元数据。这招我实测有效yum clean all rm -rf /var/cache/dnf/* yum makecache/var/cache/dnf这个目录是 dnf 的本地元数据缓存把它整个删掉再重建能让 yum 彻底忘掉旧状态。5.5 问题速查表现象可能原因解决思路404 路径错误$releasever被解析成 V10 / 目录名不匹配将版本号写死为 8或按镜像站实际目录调整 baseurlrepomd.xml 无法下载网络不通 / DNS 解析失败curl 测试源地址检查安全组和 DNSgpg key 未安装本地缺少对应公钥手动下载公钥文件并rpm --importmakecache 反复失败dnf 缓存脏数据yum clean all 删除/var/cache/dnf/*多个源提供同一个包源未设置优先级安装 yum-plugin-priorities 并配置 priority 参数下载速度慢选的镜像站不适合当前网络换云厂商内网源或用 curl 测速对比不同镜像站6. 离线/内网环境的另一个思路本地 yum 源搭建6.1 什么时候会用到本地源很多生产环境出于安全考虑服务器处于内网隔离区无法访问外网镜像站。还有一类场景是你手头有一批同样架构、同样版本的麒麟机器如果每台都去外网拉包既慢又浪费带宽。这时候在局域网里搭一个本地 yum 源把所有机器统一指向内网地址安装效率能提升一个量级。本地源有两种常见形式一种是用麒麟的 ISO 镜像文件直接挂载出来当源适合弥补补充基础软件包另一种是从已装好软件的机器上同步 rpm 包或者把外网源的关键包预下载下来再通过createrepo生成元数据做成一个内部仓库。第一种最简单我用它举例。6.2 ISO 挂载 createrepo 制作本地仓库假设你手上有Kylin-Server-V10-SP1-x86_64.iso这个镜像文件先在局域网的一台服务器上执行挂载mkdir -p /mnt/cdrom mount -o loop Kylin-Server-V10-SP1-x86_64.iso /mnt/cdrom挂载好以后如果镜像里自带repodata目录那它本身就是合格的源直接写 repo 文件就能用。但如果你想积累更多包把别的机器上装过的 rpm 都收集到一个目录里再用createrepo扫描生成元数据这样后续所有机器都能从这个目录安装。命令流程# 安装 createrepo 工具如果系统里还没有 yum install -y createrepo # 创建本地仓库目录把 rpm 包放进去然后生成元数据 mkdir -p /data/localrepo cp /path/to/rpms/*.rpm /data/localrepo/ createrepo /data/localrepo/createrepo会在/data/localrepo/下生成一个repodata目录里面就是 yum 元数据。这一步之后这个目录就可以直接作为仓库地址使用了。6.3 把本地源写进 repo 文件在每台需要使用本地源的机器上创建/etc/yum.repos.d/local.repo[local] nameLocal Repository baseurlfile:///data/localrepo/ enabled1 gpgcheck0注意baseurl用file://协议前缀gpgcheck 我建议先设为 0因为内网自建的包可能没有对应的公钥签名。如果你更讲究也可以把/mnt/cdrom挂载目录直接作为 baseurl 指向。之后同样执行yum clean all yum makecache测试yum repolist看到local仓库出现说明本地源搭建完成。基于我个人的使用体验给刚接触麒麟系统的朋友一个实在建议换完源以后不要急着把所有源一锅端全部使用先保留一个你最信任的第三方源作为主力其他源设成备用再配好优先级。这样系统既能保持稳定又能在需要额外软件包时灵活补充。我自己在这套流程上翻过几次车弯路走多了以后深深体会到yum 源这件事说到底是“路径、公钥、缓存”三个关键词的活把这三样搞明白了什么源都能玩得转。希望这篇文章能帮你在麒麟 V10 上少踩坑顺顺利利把软件装齐。