在无外网或需要固定版本软件包的环境中,可把 RHEL 安装镜像挂载到本机,
将镜像内的软件包与元数据拷到本地目录,再编写 .repo 文件,即可用 YUM/DNF 从本地仓库安装软件。
挂载系统安装镜像到系统本地
方法一:上传系统镜像文件至系统本地
上传镜像至系统本地的方法很多,这里不展开细节。常见做法例如:
- 个人 PC 本地通过 FTP 服务端工具搭建 FTP 服务(非客户端工具,如 Windows 的 IIS、FileZilla Server、Wing FTP Server 等)
- RHEL 本机通过 vsftpd 创建 FTP 服务
- 使用 OpenSSH 附带的 SFTP 服务
上传镜像文件至系统本地后,用 mount 命令挂载。
例如将 /tmp 目录下的 rhel-server.iso 挂载到 /mnt:
mount /tmp/rhel-server.iso /mnt
方法二:虚拟光驱挂载镜像文件
如果使用的是虚拟机,可在虚拟机管理系统上通过虚拟光驱加载 ISO。
虚拟光驱设备默认路径多为 /dev/sr0;若已加载其他设备,路径可能不同。
可用 lsblk 查看块设备信息:如下图 sr0 为约 4.2G 的只读存储(rom),
与所加载镜像大小基本一致,即可确认镜像已被虚拟光驱读取。
之后即可挂载,例如将块设备 /dev/sr0 挂到 /mnt:
mount /dev/sr0 /mnt
拷贝 RPM 包和元数据文件
RHEL 7
RHEL 7 镜像中,本地源主要需要 Packages、repodata 这两个目录:
分别存放 RPM 软件包和元数据。元数据为本地众多 RPM 提供索引,并记录软件包依赖关系。
mkdir -p /pkg/rhel7
cp -r /mnt/Packages /pkg/rhel7
cp -r /mnt/repodata /pkg/rhel7
RHEL 8
RHEL 8 镜像中,本地源主要使用 AppStream、BaseOS 两个目录。
BaseOS 提供安装所需的核心操作系统功能集合;AppStream 提供额外的用户空间应用、运行时语言和数据库等,以支持多种工作负载。
mkdir -p /pkg/rhel8
cp -r /mnt/AppStream /pkg/rhel8
cp -r /mnt/BaseOS /pkg/rhel8
目录名大小以镜像内实际为准。
配置 repo 文件
repo 文件是软件仓库的配置文件,通常记录一个或多个仓库的名称、描述、下载地址等。
自定义仓库需自行编写 repo 文件,统一放在 /etc/yum.repos.d/ 下,并以 .repo 结尾。
vi /etc/yum.repos.d/LOCALYUM.repo
RHEL 7 示例
仓库名 LOCALYUM,描述 LOCALYUM,地址指向本地 /pkg/rhel7,
启用该仓库,且不使用 GPG 对包做完整性校验:
[LOCALYUM]
name=LOCALYUM
baseurl=file:///pkg/rhel7
enabled=1
gpgcheck=0
RHEL 8 示例
需要两个存储库配合使用:
[LOCALYUM_BaseOS]
name=LOCALYUM_BaseOS
baseurl=file:///pkg/rhel8/BaseOS
enabled=1
gpgcheck=0
[LOCALYUM_AppStream]
name=LOCALYUM_AppStream
baseurl=file:///pkg/rhel8/AppStream
enabled=1
gpgcheck=0
测试 YUM
清理 yum 缓存目录中的各类内容:
yum clean all
下载并确保所有已启用仓库的元数据可用:
yum makecache
之后即可使用本地软件仓库安装软件。