拿OpenEuler来举例:
1. 镜像说明
openEuler 提供两类ISO介质:
-
Standard DVD(约3.5G):仅包含系统基础运行组件,大量工具、开发包缺失,离线安装极易出现
No match; -
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作为唯一软件源
二、前置准备
- 将17.1GB Everything ISO上传至服务器,示例存放路径
/data/iso/openEuler-everything.iso; - 磁盘预留空间:ISO本身17.1GB,临时挂载无需额外占用磁盘;如需持久化复制镜像文件,至少预留20GB空闲空间;
- 校验镜像完整性(可选,防止传输损坏)
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