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 验证挂载是否成功

进入挂载目录查看核心目录文件,存在PackagesrepodataRPM-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-baselocal-epol 两行仓库,代表本地源配置生效。

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

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

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

命令正常返回软件名称、描述,无Cannot retrieve repository metadataNo 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
相关推荐
蝎子莱莱爱打怪2 小时前
那不是我的黑历史,那是我的来时路啊!😭😭
后端·程序员
用户298698530142 小时前
Java 实现 Word 文档文本与图片提取的方法
java·后端
蝎子莱莱爱打怪3 小时前
XZLL-IM干货系列 04|Netty 长连接实战:Pipeline 怎么排、心跳怎么跳、连接怎么管
后端·微服务·面试
Csvn3 小时前
Rsync 文件同步与增量备份 — 运维的数据守门员
后端
苏三说技术3 小时前
推荐一个牛逼的智能代码审查系统
后端
倾颜3 小时前
从 GitHub Actions 到本地兜底发布:AI Mind 容器化上线的一次真实收口
后端
像我这样帅的人丶你还3 小时前
Java 后端详解(二):注解、参数绑定、评论与用户认证
后端
用户762352425913 小时前
深入理解AQS之独占锁ReentrantLock
后端
用户762352425913 小时前
理解 CAS & Atomic 原子操作类
后端