openEuler 20.03 yum源配置指南:解决no enabled repositories报错
1. 从一次真实的部署翻车说起如果你在虚拟化平台或者物理机上装完 openEuler release 20.03兴冲冲敲下第一条yum install命令结果终端甩回来一句Error: There are no enabled repositories in /etc/yum.repos.d别慌这不是你装错了而是这个版本默认就没给你配好可用的软件源。openEuler 20.03 是华为捐献给开放原子开源基金会之后较早的一个 LTS 版本它的定位偏向服务器和云计算场景安装镜像里自带的 repo 文件要么是空的要么指向的是内网地址要么干脆只有.repo的模板文件而没有实际内容。所以“装完系统第一件事就是修 yum”几乎成了这个版本用户的必修课。这篇文章面向的是刚接触 openEuler 的运维新手、正在做国产化替代验证的工程师以及需要在离线或半离线环境里批量部署的从业者。我会把“为什么报这个错”“repo 文件到底该怎么写”“本地源和网络源怎么选”“装完之后怎么验证”这一整条链路拆开讲清楚并且给出可以直接抄作业的配置片段。全文基于我在多台测试机和虚拟化环境里反复踩坑的经验整理不涉及任何特定机构或真实项目信息你可以放心对照自己的环境操作。核心关键词就三个openEuler 20.03、yum 源配置、no enabled repositories 报错。搞懂这三个后面所有操作都是顺水推舟。2. 报错背后的真实原因拆解2.1 这个报错到底在说什么There are no enabled repositories in /etc/yum.repos.d这句话翻译成人话就是yum 去/etc/yum.repos.d/这个目录里找软件仓库的配置文件结果发现要么一个.repo文件都没有要么有文件但里面所有仓库的enabled字段都是0要么文件存在但语法有问题导致 yum 直接忽略了它。yum 找不到任何一个“启用状态”的仓库自然就没法知道该从哪里下载软件包于是直接罢工。这里有个容易混淆的点很多人以为“没有 repo 文件”和“repo 文件没启用”是两回事但在 yum 看来结果是一样的——可用仓库数量为零。所以排查的时候不能只ls一下目录就下结论得实际去看文件内容。2.2 openEuler 20.03 为什么默认不带源这跟发行版的定位有关。openEuler 主要面向服务器、边缘计算和云基础设施很多部署场景是内网隔离的官方不可能预设一个“一定能连通”的公网地址。另外 20.03 这个版本在发布时软件仓库的镜像策略和后来的 22.03、24.03 不完全一样早期镜像里/etc/yum.repos.d/下可能只有一个openEuler.repo的占位文件里面的baseurl指向的是需要额外配置才能访问的地址或者enabled0。这就导致新手装完系统后第一反应是“系统坏了”其实只是源没配。我实测过几个不同来源的 20.03 镜像有的里面连.repo文件都没有目录是空的有的有一个文件但内容被注释掉了。所以第一步永远是先看目录里有什么。2.3 本地源和网络源的取舍逻辑解决这个问题有两条路一是配网络源直接指向公开的镜像站点二是配本地源用安装 ISO 或者挂载的光盘做仓库。两者没有绝对优劣取决于你的环境。网络源的好处是软件包全、更新及时适合能连外网的机器缺点是依赖网络质量而且如果镜像站点策略变动地址可能失效。本地源的好处是完全离线可用、速度快、稳定适合内网批量部署缺点是软件包受限于 ISO 里包含的内容可能缺少某些额外组件。我的建议是能连外网就优先配网络源内网环境或者对稳定性要求极高的生产机就配本地源两者甚至可以共存——本地源优先级调高网络源作为补充。下面两节分别讲怎么落地。3. 网络源配置的完整实操3.1 先确认系统版本和架构动手之前先确认两件事避免配了不对版本的源。执行cat /etc/openEuler-release uname -m第一条命令会输出类似openEuler release 20.03 (LTS)的内容确认你确实是 20.03。第二条输出x86_64或aarch64这决定了你要用哪个架构的仓库地址。很多人配完源发现装包报 404就是因为架构对不上——比如在 ARM 机器上用了 x86_64 的地址。3.2 备份并清理原有 repo 文件不管原来有没有文件先备份再清理这是运维的基本素养cd /etc/yum.repos.d/ mkdir -p backup mv *.repo backup/ 2/dev/null ls -la这样做的目的是排除旧文件干扰。有时候旧文件里有个语法错误的仓库yum 解析时可能报奇怪的错清空重来最干净。备份目录留着万一要回滚也方便。3.3 写入新的 repo 配置文件新建一个文件比如叫openEuler.repovi /etc/yum.repos.d/openEuler.repo内容如下以 x86_64 为例[openEuler-20.03-LTS] nameopenEuler 20.03 LTS baseurlhttps://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/ enabled1 gpgcheck1 gpgkeyhttps://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler [openEuler-20.03-LTS-everything] nameopenEuler 20.03 LTS Everything baseurlhttps://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/ enabled1 gpgcheck1 gpgkeyhttps://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler [openEuler-20.03-LTS-update] nameopenEuler 20.03 LTS Update baseurlhttps://repo.openeuler.org/openEuler-20.03-LTS/update/x86_64/ enabled1 gpgcheck1 gpgkeyhttps://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler几个关键字段解释一下。baseurl是仓库的实际地址末尾的斜杠不能少少了可能拼出错误的路径。enabled1表示启用这是解决报错的核心。gpgcheck1表示校验软件包签名安全起见建议开着如果内网环境搞不定 GPG key可以临时设成 0但生产环境不推荐。gpgkey指向签名公钥的位置配对了才能通过校验。如果是 aarch64 架构把地址里的x86_64全部换成aarch64即可。三个仓库分别对应基础系统包、全量包和更新包全配上覆盖更全。3.4 刷新缓存并验证配完文件别急着装东西先刷新缓存yum clean all yum makecacheyum clean all清掉旧的元数据yum makecache从新仓库下载元数据到本地。如果这一步能跑完不报错基本就成了。然后验证一下yum repolist正常输出会列出你配置的仓库每个仓库后面有包数量。如果repolist显示仓库数量为 0说明配置还是有问题回到上一步检查文件语法——特别注意中文字符、多余空格、缩进错误这些都会导致解析失败。最后实测装一个包yum install -y vim能装上就彻底通了。注意如果yum makecache卡住或者超时多半是网络问题。可以先ping一下仓库域名或者用curl -I看地址是否可达。有些内网环境需要走特定的出口这个得根据实际网络策略处理。4. 本地源配置离线环境的救星4.1 什么时候该用本地源内网机器、安全要求高的生产环境、批量部署几十台机器的时候网络源就不合适了——要么连不上要么几十台同时拉包把带宽打满。这时候用安装 ISO 做本地源是最优解。ISO 里包含了基础系统所需的绝大部分软件包装个 vim、gcc、开发库完全够用。4.2 挂载 ISO 文件假设你的 ISO 放在/root/openEuler-20.03-LTS-x86_64-dvd.iso先建挂载点再挂载mkdir -p /mnt/cdrom mount -o loop /root/openEuler-20.03-LTS-x86_64-dvd.iso /mnt/cdrom-o loop是把普通文件当块设备用的关键参数不加会报错。挂载完ls /mnt/cdrom应该能看到Packages、repodata这些目录。repodata目录的存在说明这个 ISO 本身就是个合法的仓库可以直接拿来用。如果是物理光驱把-o loop /root/xxx.iso换成/dev/sr0之类的设备名即可。4.3 配置本地 repo 文件新建/etc/yum.repos.d/local.repo[local-iso] nameLocal ISO Repository baseurlfile:///mnt/cdrom enabled1 gpgcheck0这里baseurl用的是file://协议指向挂载点。gpgcheck0是因为本地 ISO 的签名校验在离线环境里配置起来麻烦而且 ISO 本身来源可信关掉校验问题不大。如果你对安全有要求可以保留gpgcheck1并指定 ISO 里的 GPG key 路径。4.4 开机自动挂载的处理手动mount的挂载点在重启后会消失导致 yum 又找不到源。解决办法是写进/etc/fstabecho /root/openEuler-20.03-LTS-x86_64-dvd.iso /mnt/cdrom iso9660 loop,defaults 0 0 /etc/fstab这样每次开机自动挂载。写完可以用mount -a测试一下有没有语法错误没报错就说明配置正确。4.5 本地源和网络源共存的优先级如果你两个源都配了yum 默认会从所有启用的仓库里找包。想让本地源优先可以在本地源的配置里加一行priority1需要yum-plugin-priorities插件支持数字越小优先级越高。不过 20.03 默认可能没装这个插件简单点的做法是需要离线装包时只启用本地源把网络源的enabled临时改成 0。5. 常见报错与排查速查5.1 配置后仍然报 no enabled repositories最常见的原因是文件扩展名不对。yum 只认.repo结尾的文件如果你存成了.repo.txt或者.confyum 直接无视。用ls -la /etc/yum.repos.d/确认一下。另一个原因是文件权限虽然少见但如果文件权限是 000yum 读不了也会当没有。正常应该是 644。还有一种情况是文件里所有仓库的enabled都写成了0或者enabled这行被注释掉了。仔细检查每一行。5.2 GPG 校验失败报错类似Public key for xxx.rpm is not installed或者GPG check FAILED。这说明gpgkey地址不对或者 key 没导入成功。手动导入一次rpm --import https://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler导入后再试。如果还是不行临时把gpgcheck改成 0 先跑通再回头解决 key 的问题。5.3 仓库地址 404yum makecache报 404说明baseurl拼错了或者该路径下没有repodata。用浏览器或者curl访问一下这个地址看能不能列出目录。注意 openEuler 的仓库路径结构OS、everything、update是三个不同的子路径别混用。5.4 缓存损坏导致的奇怪错误有时候配置明明对但 yum 就是报一些莫名其妙的元数据错误。这时候yum clean all清缓存再yum makecache基本能解决。如果还不行把/var/cache/yum/整个删掉重建。报错现象最可能原因处理动作no enabled repositories无 .repo 文件或全未启用检查目录和 enabled 字段GPG check FAILEDkey 未导入或地址错手动 rpm --import404 Not Foundbaseurl 路径错误curl 验证地址元数据解析错误缓存损坏yum clean all 后重建装包时依赖缺失仓库不全补充 everything 仓库5.5 一个容易被忽略的坑openEuler 20.03 的某些镜像里/etc/yum.repos.d/下会有一个openEuler.repo文件但里面的baseurl指向的是一个需要特定网络环境才能访问的地址。这种情况下yum repolist可能不报错但实际装包时全部超时。判断方法是看repolist输出的仓库状态如果显示0 packages或者状态异常就要怀疑地址不可达。解决办法就是按本文的方法换成可访问的地址。6. 装完源之后该做的几件事源配通只是第一步后面还有几个动作能让你的 openEuler 用起来更顺手。首先是更新系统到最新补丁级别yum update -y这一步会把基础包升到仓库里的最新版本修复已知问题。生产环境建议先在测试机验证再批量执行。其次是装几个常用工具比如vim、net-tools、wget、tar这些在最小化安装的镜像里往往没有yum install -y vim net-tools wget tar再就是配置dnf的替代关系。openEuler 20.03 里yum和dnf基本是互通的yum命令实际调用的是dnf的兼容层。如果你习惯用dnf直接敲dnf也能用配置的 repo 文件是共享的不用重复配。最后提醒一点如果你是在做批量部署可以把配好的/etc/yum.repos.d/目录打包通过配置管理工具分发到其他机器省得一台台手动改。本地源的话把 ISO 和挂载配置一起分发配合fstab自动挂载基本能做到开箱即用。我个人在实际操作中的体会是openEuler 20.03 的 yum 问题九成以上都出在 repo 文件上要么没有要么没启用要么地址错。把本文的排查顺序走一遍——先看目录、再看文件内容、再验证地址可达性、最后刷新缓存——基本没有解决不了的。真正麻烦的是内网环境里地址不可达又没法改网络策略的情况那种就只能老老实实做本地源。另外配源的时候养成备份旧文件的习惯回滚的时候能省不少事。

相关新闻

HTML表单与表格组合实战:批量编辑与订单审核实现

HTML表单与表格组合实战:批量编辑与订单审核实现

最近在整理某后台系统的库存与订单管理模块,代码评审时又看到一批人卡在同一个点上:表格和表单到底怎么放到一起。我刚开始写页面那两年也在这上面栽过跟头——表格是拿来展示数据的,表单是拿来收集数据的,这俩本来分工明确&#…

2026/10/17 20:03:10 阅读更多 →
WebGL圆形点绘制:gl_PointCoord与距离场实现技巧

WebGL圆形点绘制:gl_PointCoord与距离场实现技巧

1. 从方正的点讲起:光栅化规则与两个关键内置变量做粒子效果的时候,我第一次用gl.drawArrays(gl.POINTS, 0, 10000)往屏幕上撒了一万个点,结果屏幕上全是密密麻麻的小方块。当时我以为是自己数据传错了,检查半天发现纹理、缓冲区、…

2026/10/17 20:03:10 阅读更多 →
8位CPU硬件思维训练:数据通路、控制时序与状态迁移实战

8位CPU硬件思维训练:数据通路、控制时序与状态迁移实战

1. 这不是复习提纲,是能直接上手的“硬件思维训练手册”你打开这页,大概率正被《计算机组成原理》折磨得头皮发紧——寄存器堆怎么连?微程序控制器里那堆微指令到底在指挥谁?Cache映射方式一换,性能差出三倍&#xff0…

2026/10/17 20:03:10 阅读更多 →

最新新闻

一文读懂 VideoChat2 全系模型:Stage2、Stage3 与 HD Stage4 深度对比,Mistral 7B 与 Phi3 该如何选择?

一文读懂 VideoChat2 全系模型:Stage2、Stage3 与 HD Stage4 深度对比,Mistral 7B 与 Phi3 该如何选择?

【免费下载链接】VideoChat2_stage2_Mistral_7B 项目地址: https://ai.gitcode.com/OpenGVLab/VideoChat2_stage2_Mistral_7B 点击查看 免费下载 VideoChat2 是由 OpenGVLab(InternVideo 团队)推出的开源视频理解大模型系列,通过…

2026/10/17 20:41:44 阅读更多 →
Unity iOS接入微信登录与分享:从配置到避坑全流程

Unity iOS接入微信登录与分享:从配置到避坑全流程

1. 接入前的整体设计与思路拆解去年我在做一款上线iOS的Unity游戏时,需要接入微信登录和分享功能。本来以为这活儿跟Android端差不多,调个SDK、写几个方法就行,结果真正动手才发现iOS端的流程比想象中繁琐得多,坑也更多。写这篇文…

2026/10/17 20:41:43 阅读更多 →
提示词加密传输实战:从mTLS到AES-GCM的完整方案

提示词加密传输实战:从mTLS到AES-GCM的完整方案

前阵子我们给内部一套大模型问答系统做安全改造,团队争得最多的不是模型效果,而是提示词走公网时怎么保证不被人截走、改掉。问题听起来挺基础,但真正要把提示工程加密传输机制落地,牵扯到证书体系、应用层加密、防重放、日志脱敏…

2026/10/17 20:41:43 阅读更多 →
SSH免密登录实战:密钥生成、公钥部署与权限排查全指南

SSH免密登录实战:密钥生成、公钥部署与权限排查全指南

1. SSH免密登录,到底免的是什么做运维和开发的同学,几乎每天都要跟远程服务器打交道。登录服务器最烦的事情是什么?就是每次都要输密码,尤其是现在密码策略越来越严,动不动要求十六位混大小写带特殊字符,一…

2026/10/17 20:41:43 阅读更多 →
C++高仿贪吃蛇实战:EasyX游戏编程核心逻辑与踩坑记录

C++高仿贪吃蛇实战:EasyX游戏编程核心逻辑与踩坑记录

翻到旧项目的时候,我翻出了很早之前用 EasyX 写的那版高仿贪吃蛇。重新整理源码时发现,这一版的手感、界面和细节已经比较接近手机上经典效果了。网上讲贪吃蛇的教程其实不少,但大部分版本都停留在“能动、能吃到食物”的层面,稍微…

2026/10/17 20:41:43 阅读更多 →
回溯算法实战:挑选卡片问题的组合搜索与剪枝优化

回溯算法实战:挑选卡片问题的组合搜索与剪枝优化

1. 回溯算法解决挑选卡片问题的整体设计思路挑选卡片这个问题,表面上看是一个简单的组合选择场景,但背后隐藏的是典型的约束满足与组合搜索问题。我第一次接触这类题目时,直觉反应是用贪心或者动态规划去套,结果发现状态转移根本写…

2026/10/17 20:40:43 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →