Linux搭建本地YUM源:离线环境也能轻松安装软件
为什么需要本地YUM源
本地YUM源(Local YUM Repository)能让Linux服务器在没有互联网的情况下,通过本地光盘镜像或同步好的离线仓库来安装软件包。
尤其适用于内网服务器、安全要求高的生产环境或带宽紧张的机房。
搭建完成后,yum install 命令会直接走本地源,速度快且不受网络波动影响。
环境准备与系统检查
开始前请确认以下条件:
- 操作系统:CentOS 7/8、RHEL 7/8、Rocky Linux、AlmaLinux 等基于 RHEL 的发行版(Ubuntu/Debian 不适用 YUM,推荐改用 APT 本地源)。
- 权限:拥有 root 权限或可以使用
sudo。 - 存储空间:本地源需要存放软件包,至少预留 8GB 以上。
- 工具检查:运行
rpm -qa | grep createrepo确认是否已安装createrepo工具(用于生成仓库元数据),如果未安装,可先从有网络的机器离线下载 RPM 包。
挂载 ISO 或同步仓库(核心步骤)
方式一:使用系统安装光盘 ISO
- 将 ISO 文件上传到服务器,例如
/opt/CentOS-7-x86_64-DVD-2009.iso。 - 创建挂载点目录:
mkdir -p /mnt/cdrom - 挂载 ISO:
mount -o loop /opt/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom
- 若提示
mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only.属于正常现象。
- 验证挂载内容:
ls /mnt/cdrom/应看到Packages、repodata等目录。
方式二:通过网络同步官方仓库(用于持续更新)
如果服务器有临时外网权限,可以用 reposync 将仓库同步到本地:
yum install -y yum-utils
mkdir -p /var/local/yum/base
reposync --repoid=base --download_path=/var/local/yum/base
同步完成后生成元数据
createrepo /var/local/yum/base
注意:同步时间取决于网络速度,建议在非高峰时段执行。
创建本地仓库并配置 repo 文件
无论用方式一还是方式二,都需要让 YUM 知道从哪里读取仓库信息。
方法如下:
- 备份原有 repo 文件(可选):
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak - 新建本地 repo 文件:
vim /etc/yum.repos.d/local.repo - 写入以下内容(以挂载 ISO 为例):
[local]
name=Local YUM Repository
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0baseurl指向挂载点或同步后的目录路径。gpgcheck=0表示跳过 GPG 签名验证,内网环境可简化;若需验证请将gpgkey指向 ISO 内的RPM-GPG-KEY-CentOS-7。
- 清除原有缓存并重建:
yum clean all && yum makecache
验证本地 YUM 源是否生效
- 列出所有可用仓库:
yum repolist - 若看到
local仓库且数量不为 0,说明配置成功。 - 尝试安装一个软件包:
yum install -y tree - 安装过程应无网络请求,直接从本地读取。
- 查看具体 package 来源:
yum list tree
常见问题与避坑指南
No package available或Error: Cannot find a valid baseurl for repo
- 检查
baseurl路径是否正确,确认目录下存在repodata文件夹。对于 ISO 挂载方式,/mnt/cdrom下必须包含repodata。若缺少,说明 ISO 文件并非完整 DVD(如 Minimal ISO 没有软件包集合)。
createrepo: command not found
- 安装 createrepo:先通过网络或其他方式安装
createrepo包(例如从另一台机器下载 RPM 后rpm -ivh createrepo-*.rpm)。
- 挂载后
/mnt/cdrom目录空或只读错误
- 确认 ISO 文件未损坏,可使用
file /opt/*.iso查看类型。如果报错mount: /mnt/cdrom: mount failed: Operation not permitted,尝试用sudo或切换到 root 用户。
- repo 文件有多个源冲突
- 备份并删除其他所有
.repo文件,只保留local.repo;或设置其他源enabled=0。
总结
本地 YUM 源是 Linux 运维中最常用也最基础的技能之一。
通过 ISO 挂载或 reposync 同步,你可以在离线环境中稳定地安装和更新软件包。
建议先把本文步骤走通,再根据自身网络情况选择挂载或同步方式。
遇到错误时,优先检查路径、权限和 repodata 完整性——多数问题都能通过这三点定位解决。