Linux操作系统生产中如何使用ISO镜像文件来搭建本地镜像源?
目录
一、部署本地源(ISO文件上传到系统/拷贝挂载镜像)
1.1.部署本地源的原因
在实际的生产中,很多情况并不能直接将服务器接入互联网中来进行使用(如果可以接入的话,直接使用我们的公有云是最方便的,像阿里云,腾讯云或者各大高校镜像库等),这就使得我们不能直接接通互联网来直接进行软件包的下载、更新,这个时候如果需要避免接通外网,但是又有对离线环境安装软件包的需求(如果说镜像包里边找不到的话,那么就需要去网上去找对应的安装了,也可以先使用公有云进行下载,再进行相互拷贝)。就可以使用镜像来作为本地源来进行管理。
原因:在实际生产的过程中,为避免安装很多无关不必要的软件,以及减少软件漏洞,很多时候投入生产的操作系统,安装方式都是最小化安装,这就使得其实ISO中自带的很多安装包并没有得到安装。
1.2.部署流程
在Linux系统中,若要将ISO作为本地源,其核心思路就是将ISO隐式挂载在操作系统上,这种通过隐式挂载的方式可以直接访问ISO文件内的文件系统内容。
核心原理:
ISO镜像本质是一个文件系统快照(通常为iso9660格式),包含本地源所需的repodata(元数据)和Packages(软件包)等目录。不挂载时,需通过以下两种方式让包管理器(如yum/dnf、apt)识别ISO内的文件。
部分Linux发行版的包管理器(如yum/dnf)支持通过循环设备(loop device)隐式挂载ISO,直接在配置文件中指定ISO文件路径。系统会自动处理ISO的读取和解码。
1.2.1.配置步骤(两种方式)
1)上传iso文件(或则拷贝系统iso文件)

或则将挂载的镜像拷贝出一份,如下
先找到对应镜像位置:


2)创建挂载点目标目录
mkdir -p /tmp/iso-mnt /mnt/local-repo
这里为啥需要创建两个目录,解释一下,第一个目录我们可以使用来存放iso的存放位置,第二个目录则是作为我们实际loop挂载的目录。

3)挂载ISO(只读模式,不影响原文件)
mount -o loop,ro /iso/CentOS-7-x86_64-DVD-2009.iso /tmp/iso-mount

4)删除ISO文件
此时ISO已无用,可删除

5)创建本地源配置文件
在/etc/yum.repos.d/目录下新建.repo文件(如localyum.repo):
[localyum]
name=Local ISO Repository
baseurl=file:///mnt/local-repo # 若直接使用ISO挂载路径,此处为file:///mnt
enabled=1 # 启用该源
gpgcheck=0 # 若ISO未签名,关闭GPG校验(或配置gpgkey指向ISO内的公钥)
如果是跟着步骤来的话,直接复制粘贴以下就行:
[localyum]
name=Local ISO Repository
baseurl=file:///mnt/local-repo
enabled=1
gpgcheck=0
注意:在yum配置文件中,注释是不被允许的。如果您需要注释掉某一行配置,可以使用其他方式来实现,比如将该行配置前面加上井号(#)来表示注释。但是请注意,这种方式可能会导致yum无法正确解析配置文件,从而引发错误。
6)验证配置有效性
刷新包管理器缓存,确认ISO内的源被识别:
yum clean all && yum makecache

验证:
测试安装WireShark软件

二、整体示例
2.1.整体示例(上传镜像的方式)
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root root 1803 1月 27 14:33 anaconda-ks.cfg
-rw-r--r--. 1 root root 1851 1月 27 14:45 initial-setup-ks.cfg
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root root 1803 1月 27 14:33 anaconda-ks.cfg
-rw-r--r--. 1 root root 1851 1月 27 14:45 initial-setup-ks.cfg
[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir soft
[root@localhost opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 8月 25 2018 rh
drwxr-xr-x. 2 root root 6 1月 27 19:30 soft
[root@localhost opt]# cd soft
[root@localhost soft]# ll
总用量 4464640
-rw-r--r--. 1 root root 4571791360 1月 27 19:35 OracleLinux-Release7-Update6-x86_64-dvd.iso
[root@localhost soft]# mkdir -p /media/iso
[root@localhost soft]# ll
总用量 4464640
-rw-r--r--. 1 root root 4571791360 1月 27 19:35 OracleLinux-Release7-Update6-x86_64-dvd.iso
[root@localhost soft]# mount -o loop /opt/soft/OracleLinux-Release7-Update6-x86_64-dvd.iso /media/iso
mount: /dev/loop0 写保护,将以只读方式挂载
[root@localhost soft]# ll
总用量 4464640
-rw-r--r--. 1 root root 4571791360 1月 27 19:35 OracleLinux-Release7-Update6-x86_64-dvd.iso
[root@localhost soft]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
总用量 16
drwxr-xr-x. 2 root root 6 1月 27 15:16 bak
-rw-r--r--. 1 root root 13093 11月 2 2018 public-yum-ol7.repo
[root@localhost yum.repos.d]# mv public-yum-ol7.repo bak/
[root@localhost yum.repos.d]# ll
总用量 0
drwxr-xr-x. 2 root root 33 1月 27 19:41 bak
[root@localhost yum.repos.d]# ll
总用量 0
drwxr-xr-x. 2 root root 33 1月 27 19:41 bak
[root@localhost yum.repos.d]# vi localYum.repo
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# cat /etc/yum.repos.d/localYum.repo
[localyum]
name=LocalYum
baseurl=file:///media/iso
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# yum clean all
已加载插件:langpacks, ulninfo
正在清理软件源: localyum
[root@localhost yum.repos.d]# yum makecache
已加载插件:langpacks, ulninfo
localyum | 3.6 kB 00:00:00
(1/4): localyum/group_gz | 144 kB 00:00:00
(2/4): localyum/filelists_db | 3.8 MB 00:00:00
(3/4): localyum/primary_db | 5.0 MB 00:00:00
(4/4): localyum/other_db | 1.6 MB 00:00:00
元数据缓存已建立
[root@localhost yum.repos.d]# yum install -y telnet
已加载插件:langpacks, ulninfo
正在解决依赖关系
--> 正在检查事务
---> 软件包 telnet.x86_64.1.0.17-64.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=======================================================================================================================================================================
Package 架构 版本 源 大小
=======================================================================================================================================================================
正在安装:
telnet x86_64 1:0.17-64.el7 localyum 64 k
事务概要
=======================================================================================================================================================================
安装 1 软件包
总下载量:64 k
安装大小:113 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:telnet-0.17-64.el7.x86_64 1/1
验证中 : 1:telnet-0.17-64.el7.x86_64 1/1
已安装:
telnet.x86_64 1:0.17-64.el7
完毕!
[root@localhost yum.repos.d]# cat /etc/yum
yum/ yum.conf yum.repos.d/
[root@localhost yum.repos.d]#
2.2.整体示例(拷贝镜像的方式)
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root root 1925 1月 27 2026 anaconda-ks.cfg
-rw-r--r--. 1 root root 1973 1月 27 2026 initial-setup-ks.cfg
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 2.8G 0 2.8G 0% /dev
tmpfs tmpfs 2.8G 0 2.8G 0% /dev/shm
tmpfs tmpfs 2.8G 11M 2.8G 1% /run
tmpfs tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup
/dev/mapper/ol-root xfs 50G 4.3G 45G 9% /
/dev/sda1 xfs 1014M 226M 789M 23% /boot
/dev/mapper/ol-home xfs 24G 33M 24G 1% /home
tmpfs tmpfs 570M 12K 570M 1% /run/user/989
tmpfs tmpfs 570M 0 570M 0% /run/user/0
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root root 1925 1月 27 2026 anaconda-ks.cfg
-rw-r--r--. 1 root root 1973 1月 27 2026 initial-setup-ks.cfg
[root@localhost ~]# ll
总用量 8
-rw-------. 1 root root 1925 1月 27 2026 anaconda-ks.cfg
-rw-r--r--. 1 root root 1973 1月 27 2026 initial-setup-ks.cfg
[root@localhost ~]# cd /opt/
[root@localhost opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 8月 25 2018 rh
[root@localhost opt]# mkdir soft
[root@localhost opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 8月 25 2018 rh
drwxr-xr-x. 2 root root 6 1月 27 19:23 soft
[root@localhost opt]# cd soft/
[root@localhost opt]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 4.3G 0 rom
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 79G 0 part
│ ├─ol-swap 252:1 0 5.9G 0 lvm [SWAP]
│ ├─ol-home 252:2 0 24G 0 lvm /home
│ └─ol-root 252:0 0 49.1G 0 lvm /
└─sda1 8:1 0 1G 0 part /boot
[root@localhost soft]# ll
总用量 0
[root@localhost soft]# cp /dev/sr0 /opt/soft/
[root@localhost soft]#
[root@localhost soft]#
[root@localhost soft]#
[root@localhost soft]# ll
总用量 8929280
-rw-r--r--. 1 root root 4571791360 1月 27 19:37 iso7.6
-rw-r--r--. 1 root root 4571791360 1月 27 19:31 OracleLinux-Release7-Update6-x86_64-dvd.iso
[root@localhost soft]#
[root@localhost soft]#
[root@localhost soft]# mount -o loop /opt/soft/iso7.6 /media/iso
mount: /opt/soft/iso7.6 已经挂载
[root@localhost soft]# ll
总用量 8929280
-rw-r--r--. 1 root root 4571791360 1月 27 19:37 iso7.6
-rw-r--r--. 1 root root 4571791360 1月 27 19:31 OracleLinux-Release7-Update6-x86_64-dvd.iso
[root@localhost soft]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 2.8G 0 2.8G 0% /dev
tmpfs tmpfs 2.8G 0 2.8G 0% /dev/shm
tmpfs tmpfs 2.8G 11M 2.8G 1% /run
tmpfs tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup
/dev/mapper/ol-root xfs 50G 17G 33G 35% /
/dev/sda1 xfs 1014M 226M 789M 23% /boot
/dev/mapper/ol-home xfs 24G 33M 24G 1% /home
tmpfs tmpfs 570M 12K 570M 1% /run/user/989
tmpfs tmpfs 570M 0 570M 0% /run/user/0
/dev/loop1 iso9660 4.3G 4.3G 0 100% /media/iso
[root@localhost soft]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ll
总用量 4
drwxr-xr-x. 2 root root 33 1月 27 19:39 bak
-rw-r--r--. 1 root root 85 1月 27 19:51 localYum.repo
[root@localhost yum.repos.d]# vi localYum.repo
[root@localhost yum.repos.d]# cat localYum.repo
[localyum]
name=LocalYum
baseurl=file:///media/iso
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# yum clean all
已加载插件:langpacks, ulninfo
正在清理软件源: localyum
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# yum makecache
已加载插件:langpacks, ulninfo
localyum | 3.6 kB 00:00:00
(1/4): localyum/group_gz | 144 kB 00:00:00
(2/4): localyum/filelists_db | 3.8 MB 00:00:00
(3/4): localyum/primary_db | 5.0 MB 00:00:00
(4/4): localyum/other_db | 1.6 MB 00:00:00
元数据缓存已建立
[root@localhost yum.repos.d]# yum install -y telnet
已加载插件:langpacks, ulninfo
正在解决依赖关系
--> 正在检查事务
---> 软件包 telnet.x86_64.1.0.17-64.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=======================================================================================================================================================================
Package 架构 版本 源 大小
=======================================================================================================================================================================
正在安装:
telnet x86_64 1:0.17-64.el7 localyum 64 k
事务概要
=======================================================================================================================================================================
安装 1 软件包
总下载量:64 k
安装大小:113 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:telnet-0.17-64.el7.x86_64 1/1
验证中 : 1:telnet-0.17-64.el7.x86_64 1/1
已安装:
telnet.x86_64 1:0.17-64.el7
完毕!
[root@localhost yum.repos.d]#
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)