引言
在 Linux 系统管理工作中,有时我们需要在没有网络连接的环境中安装软件包,或者希望使用特定的 ISO 镜像作为软件源。本文将详细介绍如何在 RHEL(Red Hat Enterprise Linux)或 CentOS 系统中,将本地 ISO 镜像配置为 YUM 仓库,实现离线软件包安装。
通过本文的步骤,您可以:
- 创建正确的 YUM 仓库配置文件
- 挂载 ISO 镜像到指定目录
- 配置本地仓库并验证可用性
- 解决常见的配置问题
这种方法特别适用于:
- 离线环境下的系统部署
- 需要重复安装相同软件包的环境
- 测试特定版本软件包的场景
1. 创建配置文件Linux/CentOS 中配置本地 ISO 镜像作为 YUM 仓库
sudo vi /etc/yum.repos.d/iso.repo
配置内容详解:
[iso_base] # 仓库ID,用于唯一标识这个仓库
name=iso_base # 仓库显示名称,在 yum repolist 中显示
baseurl=file:///mnt/BaseOS/ # 仓库路径,file:// 表示本地文件系统路径
gpgcheck=0 # GPG签名检查,0=禁用,1=启用(需要配置gpgkey)
enabled=1 # 仓库启用状态,1=启用,0=禁用
[iso_app] # 第二个仓库的ID
name=iso_app # 第二个仓库的显示名称
baseurl=file:///mnt/AppStream/ # AppStream 仓库路径
gpgcheck=0 # 同样禁用GPG检查
enabled=1 # 启用该仓库
关键参数解释:
baseurl: 指定仓库的路径。file://协议表示本地文件系统,后面跟的是 ISO 镜像挂载后的实际路径。gpgcheck: 设置为 0 表示不检查软件包的 GPG 签名。在生产环境中,建议配置正确的 GPG 密钥并设置为 1 以确保软件包完整性。enabled: 设置为 1 表示该仓库可用,yum 会从这个仓库搜索和安装软件包。
RHEL/CentOS 8 及以后的版本通常包含两个主要仓库:
- BaseOS: 包含操作系统核心组件和基础软件包
- AppStream: 包含应用程序、运行时环境和其他工具
2. 挂载 ISO 镜像
mkdir -p /mnt
mount -o loop /path/to/rhel.iso /mnt
# 确认 /mnt/BaseOS 和 /mnt/AppStream 存在
ls -l /mnt/
3. 清理缓存并验证
yum clean all
yum repolist
4. 测试安装
sudo yum install -y <任意包名>
5. 常见问题排查
下表列出了配置本地 ISO 镜像作为 YUM 仓库时可能遇到的常见问题及其解决方法:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
yum repolist 看不到仓库 |
配置文件后缀不是 .repo |
将配置文件重命名为以 .repo 结尾 |
baseurl 找不到路径 |
挂载点不存在或路径写错 | 使用 ls /mnt/BaseOS 检查目录是否存在 |
yum install 报错 |
gpgcheck=1 但未配置 GPG 密钥 |
临时设为 gpgcheck=0,或配置正确的 gpgkey |
| 仓库 ID 冲突 | 与其他仓库重名 | 修改 [仓库ID] 为唯一值 |