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
相关推荐
站大爷IP40 分钟前
Python的浅拷贝把我坑惨了,原来copy()和deepcopy()的区别这么大
后端
卷无止境1 小时前
Apache Ossie:打破数据孤岛的语义互操作标准
后端·数据分析
晓杰在写后端1 小时前
从0到1实现Balatro游戏后端(11):商店商品池与运行时商品实例生成
后端·游戏开发
AskHarries2 小时前
OAuth 登录怎么接
后端
掘金者阿豪3 小时前
上线前能跑,上线后挂了,三个隐性的SQL陷阱
后端
用户8356290780513 小时前
如何使用 Python 为 PDF 添加和管理图层
后端·python
SimonKing3 小时前
那个号称"对标 Spring"的国产框架 Solon,到底行不行?
java·后端·程序员
霸道流氓气质4 小时前
SpringBoot中使用字典驱动的动态路由示例
java·spring boot·后端
用户69371750013844 小时前
Kimi K3 综合能力处于全球第一梯队
android·前端·后端
anno4 小时前
Agent 新手 Skill 优先级指南:从第一套必装工作流,到专业能力补全
前端·后端