openEuler 17.1GB Everything ISO 离线本地 DNF 源搭建教程

拿OpenEuler来举例:

1. 镜像说明

openEuler 提供两类ISO介质:

  1. Standard DVD(约3.5G):仅包含系统基础运行组件,大量工具、开发包缺失,离线安装极易出现No match;

  2. Everything DVD(约17.1GB):全量RPM软件包合集,包含BaseOS、EPOL所有仓库资源,隔离内网无外网环境首选离线介质。

如下图所示:

本文基于 openEuler-22.03-LTS-SP3-everything-x86_64-dvd.iso(17.1GB超大镜像),仅讲解ISO挂载、本地yum/dnf源配置、源有效性校验,不包含各类软件安装示例。

2. 环境说明

  • 操作系统:openEuler 22.03 LTS SP3 x86_64
  • 包管理器:openEuler 使用 dnf 为主,兼容 yum 命令
  • 场景:服务器无公网、机房隔离内网,需本地ISO作为唯一软件源

二、前置准备

  1. 将17.1GB Everything ISO上传至服务器,示例存放路径 /data/iso/openEuler-everything.iso;
  2. 磁盘预留空间:ISO本身17.1GB,临时挂载无需额外占用磁盘;如需持久化复制镜像文件,至少预留20GB空闲空间;
  3. 校验镜像完整性(可选,防止传输损坏)
bash 复制代码
# 替换官方发布的sha256哈希值进行校验
sha256sum /data/iso/openEuler-everything.iso

输出哈希与官方一致代表镜像文件无损坏。

三、ISO镜像挂载操作

3.1 创建统一挂载目录

规范固定挂载路径,便于repo配置与管理

bash 复制代码
mkdir -p /mnt/openeuler-everything

3.2 loop方式挂载ISO文件

超大ISO采用loop设备挂载,17GB镜像文件挂载根据磁盘IO速度,耗时30秒~2分钟,等待命令执行完成:

bash 复制代码
mount -o loop /data/iso/openEuler-everything.iso /mnt/openeuler-everything

3.3 验证挂载是否成功

进入挂载目录查看核心目录文件,存在Packages、repodata、RPM-GPG-KEY-openEuler即挂载正常:

bash 复制代码
ls /mnt/openeuler-everything

3.4 两种挂载持久化方案

方案1:/etc/fstab 开机自动挂载(保留原ISO文件,推荐)

编辑fstab实现开机自动挂载,重启不失效:

bash 复制代码
# 写入自动挂载配置
echo "/data/iso/openEuler-everything.iso /mnt/openeuler-everything iso9660 loop 0 0" >> /etc/fstab

# 校验fstab语法,无报错代表配置合法
mount -a

方案2:复制镜像全部文件至本地磁盘(脱离ISO,读取更快)

若长期使用本地源,可将ISO内所有文件完整复制至硬盘,后续无需依赖ISO镜像文件:

bash 复制代码
mkdir -p /data/repo/openeuler-everything
cp -r /mnt/openeuler-everything/* /data/repo/openeuler-everything/

后续repo配置中baseurl修改为 file:///data/repo/openeuler-everything。

3.5 临时卸载挂载(清理操作)

如需更换镜像或释放挂载点执行卸载:

bash 复制代码
umount /mnt/openeuler-everything

四、配置本地DNF/YUM仓库源

4.1 备份并禁用系统默认在线源

openEuler自带公网仓库,无外网环境会持续连接超时,先全部备份移走:

bash 复制代码
# 创建备份目录
mkdir -p /etc/yum.repos.d/bak
# 迁移所有官方repo文件至备份目录
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

4.2 新建本地Everything源配置文件

创建local-everything.repo仓库配置,关联ISO挂载目录,开启GPG签名校验:

bash 复制代码
cat > /etc/yum.repos.d/local-everything.repo << EOF
[local-base]
name=openEuler BaseOS Local Everything
baseurl=file:///mnt/openeuler-everything
enabled=1
gpgcheck=1
gpgkey=file:///mnt/openeuler-everything/RPM-GPG-KEY-openEuler
priority=1
metadata_expire=3600

[local-epol]
name=openEuler EPOL Local Everything
baseurl=file:///mnt/openeuler-everything
enabled=1
gpgcheck=1
gpgkey=file:///mnt/openeuler-everything/RPM-GPG-KEY-openEuler
priority=1
EOF

参数简要说明:

  • baseurl=file://:本地文件协议,指向ISO挂载目录;
  • enabled=1:启用当前仓库;
  • gpgcheck=1:开启RPM包安全校验;
  • priority=1:本地源最高优先级,优先读取离线包。

五、本地源有效性测试校验

5.1 清理旧缓存、生成本地源元数据缓存

17GB镜像包含数万RPM包,生成缓存耗时2~5分钟,不要中断命令:

bash 复制代码
# 清理原有在线源残留缓存
dnf clean all
# 扫描挂载目录生成离线源索引缓存
dnf makecache

5.2 查看已启用仓库列表,确认本地源加载成功

bash 复制代码
dnf repolist enabled

输出中出现 local-base、local-epol 两行仓库,代表本地源配置生效。

5.3 仓库搜索校验(不安装软件,仅验证包检索能力)

使用dnf search检索系统内置基础包,能正常输出结果代表源完整可用:

bash 复制代码
# 检索系统基础工具包,仅测试检索,不执行安装
dnf search vim

命令正常返回软件名称、描述,无Cannot retrieve repository metadata、No match等报错,说明17GB Everything本地yum源搭建完成。

六、恢复原有在线源(回滚操作)

如需重新使用公网yum源,执行以下命令还原:

bash 复制代码
# 删除本地自定义源
rm -f /etc/yum.repos.d/local-everything.repo
# 恢复备份的官方在线源
mv /etc/yum.repos.d/bak/*.repo /etc/yum.repos.d/
# 刷新缓存
dnf clean all && dnf makecache
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码3 天前
别再前后端各写一套表单校验了
java·后端
大勇前进3 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu3 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile3 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白803 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端
二月龙3 天前
PHP 接口返回统一响应封装,让前后端对接更省心
后端
盖伦发发3 天前
软件工程SOLID 五大设计原则
后端·软件工程