ARTICLE DETAIL

建站实战干货

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

麒麟V10 ARM架构内网环境配置本地离线yum源全攻略

2026/9/16 5:56:47 拓冰建站 浏览量
麒麟V10 ARM架构内网环境配置本地离线yum源全攻略 装机时最烦什么不是系统装不上而是装完之后要用软件发现yum源连不上外网或者内网环境压根就没外网权限。尤其是麒麟V10ARM架构这种国产化环境生产环境多数是隔离网身边没有U盘里的安装包根本寸步难行。这篇文章就围绕“麒麟V10arm配置本地离线yum源”这个主题把我在ARM架构下配置本地源踩过的坑、趟平的路完整捋一遍。这套操作适合谁刚拿到麒麟V10 ARM服务器或虚拟机想离线安装软件包的同学内网隔离环境下做运维交付的工程师以及在VMware里装了麒麟V10 ARM版但受不了每次都用rpm手动装依赖的折腾党。核心目标只有一个把系统ISO镜像变成一台“内置软件超市”让yum install从此不再报错。1. 项目概述与核心思路1.1 为什么非配置本地离线yum源不可很多从CentOS过来的人习惯了联网之后直接用yum装东西。麒麟V10虽然基于Linux生态带yum/dnf包管理但它在ARM架构下的软件仓库和x86完全不同。更重要的是政府、军工、金融这类国产化替代环境绝大多数是物理隔离的内网没有外网权限软件源根本无法访问。这时候如果不会配本地源每装一个软件都是噩梦rpm包依赖一堆手动rpm -ivh一个包跟着报错一串依赖缺失人直接裂开。本地离线yum源的本质就是把麒麟V10的ISO镜像或者拷贝出来的rpm包目录挂载到系统某个目录再通过仓库配置文件告诉yum“软件从这里找”。一旦配好yum会自动处理依赖关系体验和外网源几乎一样。这是解决离线安装问题的标准做法也应该是每个做国产化运维的人必须掌握的基础技能。1.2 麒麟V10与ARM架构的适配要点麒麟V10有两个大方向桌面版和服务器版服务器版常见后缀有SP1、SP2、SP3。每个版本对应不同的ISO镜像而且不同CPU架构的ISO不能混用。这里务必注意麒麟官网下载镜像时会区分x86_64和aarch64ARM架构机器必须选aarch64版本。如果拿x86的镜像硬塞到ARM机器上grub引导那一步就过不去。ARM架构在yum配置上的特殊性在于仓库里的rpm包全部是aarch64编译的repo地址中也会包含架构信息。配置方法上麒麟V10兼容RHEL/CentOS的yum生态所以/etc/yum.repos.d/目录下写.repo文件的语法和CentOS几乎一致。理解了这一点很多CentOS的yum配置经验就能直接迁移过来不用心慌。1.3 方案选型挂载ISO还是拷贝目录配置离线源有两种常见方案直接挂载ISO把麒麟V10的ISO文件mount到某个目录yum源直接指向挂载目录。优点是不占额外磁盘空间镜像文件放在磁盘哪里都行缺点是系统重启后需要重新挂载可以写开机自启或fstab配置。拷贝rpm包到本地目录把ISO里的Packages目录整个拷贝到硬盘某个路径再用createrepo生成repodata索引。优点是源永久可用不怕重启后挂载丢失缺点是占磁盘空间一般ISO几个GB拷出来同样大小。我个人的建议如果是长期使用的服务器采用“拷贝目录createrepo”的组合最稳如果是临时测试环境、虚拟机折腾直接挂载ISO就够了省事。下面两种方案我都会写清楚你按场景选。2. 前置准备与环境确认2.1 镜像文件与安装环境准备先确认你手上的东西齐不齐麒麟V10 ARM版本的ISO镜像例如Kylin-Server-V10-SP3-General-Release-arm64-2023xxxx.iso命名大概这个格式一台ARM架构的物理机或者虚拟机VMware安装麒麟V10 ARM版需要虚拟机CPU开启ARM支持通常用M系列Mac上的VMware Fusion或QEMU模拟x86的VMware Workstation装不了ARM系统这点很多人不知道root权限或者能用sudo执行命令关于“VMware安装麒麟V10”这个热搜词我多说一嘴。最新版本的VMware Workstation在x86主机上不支持ARM系统镜像启动必须在ARM主机比如Apple Silicon Mac上用VMware Fusion或UTM、QEMU这类虚拟机软件。所以如果你是在普通Windows电脑上想装ARM版麒麟需要先确认宿主机的架构不然镜像文件拿对了也是白搭。2.2 系统环境检查与架构确认开机进入系统后先验证系统架构和版本避免后续操作白做uname -m # 显示 aarch64 说明是ARM架构显示 x86_64 说明是x86架构那就得换x86镜像 cat /etc/kylin-release # 查看麒麟版本比如 V10 SP3、V10 SP1 等 df -h # 确认磁盘空间预留至少8GB以上余量同时检查yum版本yum --version # 或者 dnf --version麒麟V10一般自带yum或dnf两者命令基本兼容。实际操作中我用yum命令比较多下文命令统一用yum如果你系统里dnf可用改成dnf也一样。再确认镜像文件是否已经上传到服务器比如放在 /data/iso/ 目录下。这一步很多新手容易漏以为系统自带ISO路径其实都需要自己准备。2.3 创建挂载点与目录规范挂载点选哪里没强制要求但建议放在 /mnt 或 /media 下。我习惯用 /mnt/cdrommkdir -p /mnt/cdrom如果做拷贝方案还需要一个存放rpm包的目录。我习惯建 /data/kyum/packagesmkdir -p /data/kyum/packages目录结构规范一下后面维护和排查都省事。别把包散落在/root下到时候清理都麻烦。3. 离线yum源配置实操3.1 方案A直接挂载ISO镜像最快路径先把ISO挂载到挂载点。假设ISO文件路径为 /data/iso/Kylin-Server-V10-SP3-Release-arm64-2023.isomount -o loop /data/iso/Kylin-Server-V10-SP3-Release-arm64-2023.iso /mnt/cdrom挂载成功后查看目录内容ls /mnt/cdrom正常会看到 Packages、repodata、BaseOS 或者 Extra 等目录。不同麒麟版本的ISO目录结构略有差异SP3的服务器版一般会有Packages和repodataS版桌面版可能叫base等。看到repodata目录说明这个ISO自带yum源索引可以直接用如果没有repodata需要走方案B生成索引。为了让重启后不用手动挂载往 /etc/fstab 加一行echo /data/iso/Kylin-Server-V10-SP3-Release-arm64-2023.iso /mnt/cdrom iso9660 loop,defaults 0 0 /etc/fstab注意写入后建议先执行mount -a测试一下确认fstab没写错再放心重启不然错了可能开不了机。3.2 方案B拷贝rpm包到本地目录这种方式适合长期使用不依赖挂载状态。先把ISO挂载上同上然后把全部rpm包拷到 /data/kyum/packagesmount -o loop /data/iso/Kylin-Server-V10-SP3-Release-arm64-2023.iso /mnt/cdrom cp -ra /mnt/cdrom/Packages/* /data/kyum/packages/Packages目录可能包含两三千个rpm包大小约2-5GB拷贝时间取决于磁盘速度SSD一般几分钟。拷完后这个目录就是你的“软件仓库根目录”。然后安装createrepo工具生成索引。如果ISO里面有createrepo的rpm包直接安装rpm -ivh /mnt/cdrom/Packages/createrepo-*.rpm有的ISO里可能没有自带createrepo包这时候可以根据依赖关系把相关的rpm一起装或者从已装系统里找云原生还是什么的。更省事的办法是如果系统能联网部分环境只是“没配源”网络是通的先临时配个外网源把createrepo装上不行就手动解决依赖。生成索引cd /data/kyum/packages createrepo .createrepo执行完成后会在 packages 目录下生成 repodata 子目录里面是repomd.xml等索引文件。这就是yum识别源的关键。3.3 编写本地仓库repo文件不管用方案A还是方案B最后都要在 /etc/yum.repos.d/ 下写一个.repo文件。这里有个关键点先备份并禁用其他repo文件避免yum同时匹配多个源导致包冲突或超时。新建一个 local.repovim /etc/yum.repos.d/local.repo内容如下以方案A挂载ISO为例[local] nameLocal Kylin Yum Repo baseurlfile:///mnt/cdrom enabled1 gpgcheck0如果是方案B拷贝目录则改成[local] nameLocal Kylin Yum Repo baseurlfile:///data/kyum/packages enabled1 gpgcheck0几个参数重点说明一下baseurl必须是file://协议路径指向真正的仓库根目录也就是包含repodata目录的目录。gpgcheck0表示不校验GPG签名。企业生产环境虽然建议开gpgcheck1但离线内网源通常是自己人维护ISO里的公钥导入也不麻烦下面会讲嫌麻烦直接设0也能跑。enabled1确保仓库被启用。如果系统里其他repo文件没禁用可以统一改后缀cd /etc/yum.repos.d/ mkdir backup mv *.repo backup/ # 然后把local.repo留在这里也可以保留其他源但把enabled0。我习惯直接移到backup目录隔离干净yum源扫描时更快也不会出现“元数据文件不匹配”的怪问题。如果开了gpgcheck1需要导入麒麟的公钥。公钥一般在ISO根目录或RPM-GPG-KEY文件里。操作如下rpm --import /mnt/cdrom/RPM-GPG-KEY-* # 或 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-*注意如果导入失败或者路径不对关闭gpgcheck是快速解法不用死磕。3.4 清理缓存并验证仓库配置完最重要的一步清理yum缓存。不清理的话yum会尝试用旧的缓存信息源配置改了也不生效yum clean all yum makecache执行yum makecache时如果baseurl和repodata都对会在几秒内生成缓存过程输出类似“local | 1.9 kB 00:00 ...”。然后验证仓库是否被识别yum repolist输出会有local仓库以及软件包数量。比如仓库 id 仓库名称 状态 local Local Kylin Yum Repo 4,096这里出现的数量就是你能离线安装的软件包个数。如果说状态为0或者提示找不到仓库多半是baseurl路径不对、repodata缺失或没有执行makecache。再实际装个包测试一下比如装一个常用的压缩工具或编辑器yum install -y vim如果无报错出现“Complete!”恭喜离线源配置成功。4. 常见问题与排查技巧实录4.1 ISO挂载报错“mount: no medium found”这个报错我遇到好几次多数是因为ISO文件名路径不对或者虚拟机的CD/DVD没有连接ISO。物理机上则可能是磁盘分区格式问题。排查三步走ls -lh /data/iso/*.iso file /data/iso/*.iso mount -o loop /data/iso/具体文件名.iso /mnt/cdrom先确认文件存在且是正常的ISO格式再重新挂载。虚拟机环境下还要在虚拟机设置里把ISO勾选为“启动时连接”。4.2 yum repolist状态为0或找不到仓库最常见的原因就是仓库配置文件里的baseurl路径和repodata实际目录对不上。比如有的ISO把repodata放在/mnt/cdrom/repodata但仓库根目录应该是/mnt/cdrom如果放错层级yum就找不到索引。另一个排查思路是确认仓库目录下真的有repodata子目录ls /mnt/cdrom/repodata/ ls /data/kyum/packages/repodata/如果目录里没有repomd.xml说明方案B没执行createrepo或者方案A镜像本身不带repodata少见。新版本麒麟ISO一般自带repodata老版本或定制版也许没有那就执行createrepo补上。4.3 “Could not open/read repomd.xml” 报错这个报错对应的核心原因是repodata目录缺失或损坏。如果是挂载ISO方案检查ISO是否完整md5校验如果是拷贝方案重新执行createrepocd /data/kyum/packages rm -rf repodata createrepo .还有一种情况是baseurl路径写错了层级。若ISO的repodata在/mnt/cdrom/repodata但你把baseurl写成了file:///mnt/cdrom/Packagesyum会去/mnt/cdrom/Packages/repodata找自然找不到。低级错误但发生频率极高。4.4 gpgcheck1导致无法安装有些麒麟V10的ISO公钥不在默认路径。在开启gpgcheck的情况下yum install会提示Public key for xxx.rpm is not installed快速解法有两种一是rpm --import从ISO里找GPG-KEY文件导入二是把repo文件里gpgcheck1改成gpgcheck0再yum clean all yum makecache。离线内网场景依赖ISO来源可信gpgcheck0不算偷懒反而是减少交付摩擦的实用选择。4.5 事务锁定错误Another app is currently holding the yum lock这是因为之前有yum进程没正常退出。麒麟的公网源连接超时最容易导致这类问题。强制清掉锁rm -f /var/run/yum.pid或者找到进程killps aux | grep yum kill -9 进程号顺手提醒一下如果之前配过公网源导致yum执行很慢多半是公网连接超时的问题。离线环境里把公网repo文件全部禁用只保留local.repo能极大提升yum响应速度。这也是为什么我强调先备份禁用其他repo文件。4.6 安装包报依赖缺失如果本地源里的包不全安装某个软件时可能提示依赖缺失。这时候先确认依赖包在那个软件包的安装文档里是否有列表然后用yum直接搜索安装yum provides */缺失包名*比如yum provides */libssl.so.10*yum会告诉你哪个rpm包提供这个库。如果本地源里有直接安装那个包。如果本地源里也没有说明你手里的ISO版本不包含该依赖要么换完整版镜像要么联网下载对应aarch64的rpm包注意必须aarch64不要下x86_64。这个操作对于硬啃离线环境的同学是一个高频动作。5. 高级技巧与生产环境实操心得5.1 如何扩展本地源基础配置成功后有时候还需要额外软件。比如你在FTP服务器/另一台内网机器上拿到了新版本的nginx.rpmaarch64想塞进本地源里。操作也很简单cp /tmp/nginx-xxxx.aarch64.rpm /data/kyum/packages/ cd /data/kyum/packages createrepo --update .--update参数可以增量更新repodata不会全量重建速度快很多。添加完再yum clean all yum makecache新包就能被识别到。这个方法比每次都用rpm -ivh手动装依赖要舒服得多。5.2 利用yum-downloadonly离线搬包内网环境里经常有这种需求在一台能联网的机器上下载好rpm包搬到离线机安装。麒麟V10可以借助yum-plugin-downloadonly或者dnf download实现。如果能联网的机器也是麒麟V10 ARM环境操作如下yum install -y yum-plugin-downloadonly yum install --downloadonly --downloaddir/data/kyum/packages nginx然后把整个目录搬到离线机执行createrepo更新源。这在多台服务器批量运维时特别实用省去逐个安装的精力。5.3 用rsync同步多台机器生产环境往往不止一台麒麟服务器。配置好一台离线源之后其余机器没有必要重复拷贝大文件。我建议通过内网rsync同步仓库目录和repo文件rsync -av /data/kyum/packages/ root目标IP:/data/kyum/packages/同步完成后在目标机器执行yum clean all yum makecache即可。如果有几十台机器还可以用Ansible这种自动化工具批量推送repo文件和同步目录效率更高。这个思路在批量国产化节点交付时非常省心单台配源的时间从半小时降到三分钟。5.4 关于ARM交叉编译与rpm包注意点顺带提一句和ARM生态相关的细节如果你以后要在x86机器上编译ARM架构的rpm包需要配置交叉编译环境这和普通yum源是两个方向。但在yum源上下文里你只需要记住一条铁律ARM机器上yum install的rpm包一定是aarch64或noarch绝不可能是x86_64。有些软件从网上下载时给了“linux版本”却不区分架构这类包装上大概率报“cannot execute binary file”因为它根本没编译成ARM指令集。做国产化适配的同学对这一点要有肌肉记忆。6. 几个踩坑后的重点提醒6.1 先看镜像版本再动手麒麟V10版本众多SP1到SP3桌面版和服务器版ISO内部结构有差异。SP3的服务器版镜像目录结构会比较规整Packages和repodata都好找桌面版的目录可能不叫Packages而是放在类似 base、extra 这种路径下。有的定制版镜像会阉割掉部分软件包导致某些软件源里找不到。配置前先ls /mnt/cdrom把目录结构看清楚比直接套网上的命令更靠谱。另外“麒麟V10安装Oracle 19c”这类需求在热搜里热度很高说明有人拿它做数据库服务器。如果是为了装Oracle本地yum源里一定提前确认好 binutils、compat-libcap1、glibc、libaio、libnsl 等系统包是否齐全离线环境缺一个就要折腾半天。建议装完源之后先用yum install -y binutils compat-libcap1 compat-libstdc-33 glibc gcc gcc-c libaio libaio-devel libgcc libstdc libstdc-devel libnsl批量验证依赖完整性少一个包就少一个后续的坑。6.2 配置完成后立刻测试安装一次很多同学配完yum源yum repolist有输出就觉得大功告成。但repolist有输出只代表yum能读到仓库索引不代表所有包都能正常安装。我非常建议配置完成后立刻找一个稍微复杂的软件比如vim plus、nfs-utils这种带依赖的装一次一是验证依赖解析完整二是给后续其他软件安装增强信心。如果一次性装成功了这个源基本可以放心用。6.3 关于ARM虚拟机环境的特殊留意如果你是在Apple Silicon Mac上用VMware Fusion或UTM安装麒麟V10 ARM版注意虚拟机的CD/DVD设置里选择“连接物理驱动器”时有时ISO不会自动识别需要手填ISO路径。还有ARM虚拟机性能相比同配置x86会弱一些createrepo生成索引时会明显感到慢不要以为是系统卡死多等一会儿。SSD上createrepo几千个包大概需要一两分钟机械硬盘可能要五分钟以上属于正常现象。6.4 repo文件命名有讲究/etc/yum.repos.d/ 下的repo文件如果命名为CentOS-Base.repoyum仍然能读取但看着会很别扭。建议用 kylin-local.repo 或者 local-kylin.repo 这种清晰的名字方便区分。同时一个repo文件里可以写多个[仓库段]比如一个本地源分成了base和extra两个目录就写成两段[local-base] nameLocal Kylin Base baseurlfile:///data/kyum/base enabled1 gpgcheck0 [local-extra] nameLocal Kylin Extra baseurlfile:///data/kyum/extra enabled1 gpgcheck0这样分段管理源的可维护性会好很多。内网环境如果对接了内部的Nexus或Artifactory等私服软件仓库也可以把baseurl改为http://内网IP/repository/kylin/让多台机器共用一套仓库避免每台机器都拷贝一份ISO文件这是大规模部署的更优解。配置本地离线yum源这件事本身不难难在对麒麟V10 ARM环境的不熟悉。我第一次配的时候也是对着各种报错卡了一下午最后发现只是baseurl少写了一级路径。希望这篇文章能把你的配置时间缩短到十分钟以内。最后再分享一个小经验如果公司内网有文件服务器把ISO镜像直接放文件服务器上每台机器用NFS/HTTP挂载比每台都留一份ISO镜像要科学得多回头你批量部署时会感谢这个决定的。