CentOS 离线 YUM 源配置指南
在企业环境中,网络稳定性或安全策略常限制服务器直接访问互联网,通过配置离线 YUM 源(本地仓库),可高效管理软件包安装与更新,避免依赖外部网络,本文将详细讲解 CentOS 系统下离线 YUM 源的搭建、同步及使用方法。
准备工作
在开始前,需完成以下基础设置:
确定系统版本
执行cat /etc/redhat-release
查看 CentOS 版本(如 CentOS 7.9 或 CentOS Stream 8),不同版本的软件源地址和工具略有差异。准备存储介质
需一台可联网的服务器作为“源主机”,用于下载软件包;目标服务器(需离线)需挂载 USB 硬盘、NFS 共享目录或本地磁盘分区,用于存储 YUM 源数据。
创建本地 YUM 仓库
步骤 1:安装 Createrepo 工具
Createrepo 是生成 YUM 元数据的必备工具,执行以下命令安装:
# 在源主机上操作(需联网) sudo yum install createrepo -y
步骤 2:下载软件包到本地目录
选择合适的软件源(推荐阿里云、网易等国内镜像站),将所需软件包及其依赖项下载至指定目录(/opt/yum_repo
):
# 创建存储目录 mkdir -p /opt/yum_repo # 使用 wget 下载 RPM 包(示例:下载 nginx 相关包) wget -P /opt/yum_repo http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/nginx-1.20.1-1.el7.x86_64.rpm wget -P /opt/yum_repo http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/nginx-all-modules-1.20.1-1.el7.noarch.rpm
提示:若需批量下载,可通过
reposync
工具同步整个仓库(需先配置 YUM 源):# 配置临时 YUM 源指向阿里云 sudo sed -i 's|^baseurl=.*|baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/|' /etc/yum.repos.d/CentOS-Base.repo # 同步全部包到本地(耗时较长,建议按需选择) reposync -r base -p /opt/yum_repo
步骤 3:生成 YUM 元数据
进入存储目录,运行 createrepo
命令生成 repodata 目录(包含软件包索引和依赖关系):
cd /opt/yum_repo sudo createrepo .
执行后,目录结构应如下:
/opt/yum_repo/
├── nginx-1.20.1-1.el7.x86_64.rpm
├── nginx-all-modules-1.20.1-1.el7.noarch.rpm
└── repodata/ # 自动生成的元数据目录
├── comps.xml
├── filelists.sqlite
├── primary.xml.gz
└── other.xml.gz
配置目标服务器使用离线 YUM 源
步骤 1:挂载存储介质
将源主机的 YUM 源目录挂载到目标服务器的本地路径(如 /mnt/local_yum
):
# 若为 NFS 共享(源主机已配置 NFS 服务) sudo mount -t nfs 源主机IP:/opt/yum_repo /mnt/local_yum # 若为 USB 硬盘(假设设备名为 /dev/sdb1) sudo mount /dev/sdb1 /mnt/local_yum
步骤 2:创建本地 YUM 源文件
在目标服务器上,编辑 /etc/yum.repos.d/local.repo
文件,添加以下内容:
[local] name=Local YUM Repository baseurl=file:///mnt/local_yum enabled=1 gpgcheck=0 # 禁用 GPG 验证(离线环境无需验证)
说明:
baseurl
支持file://
(本地路径)、http://
(内网 HTTP 服务)等协议;enabled=1
表示启用该源;gpgcheck=0
关闭数字签名检查,避免离线时因无法验证密钥而报错。
步骤 3:清理缓存并测试
执行以下命令使配置生效,并测试 YUM 功能:
sudo yum clean all # 清除旧缓存 sudo yum makecache # 重建缓存 sudo yum list # 列出可用软件包(确认能看到本地源中的包) sudo yum install nginx -y # 测试安装软件包
维护与更新离线 YUM 源
离线 YUM 源需定期同步新版本软件包,确保安全性,以下是维护流程:
在源主机更新软件包
登录源主机,使用yum update
升级软件包,并将新包复制到 YUM 源目录:sudo yum update -y cp /var/cache/yum/x86_64/7/base/packages/*.rpm /opt/yum_repo/
重新生成元数据
进入 YUM 源目录,再次运行createrepo
:cd /opt/yum_repo sudo createrepo --update . # 更新现有元数据(比全新生成更高效)
同步至目标服务器
将更新后的 YUM 源目录重新挂载到目标服务器,或通过 rsync 同步数据:# 目标服务器执行(从源主机同步) sudo rsync -avz root@源主机IP:/opt/yum_repo/ /mnt/local_yum/
常见问题与解决方案
以下表格小编总结了配置过程中可能遇到的典型问题及解决方法:
问题场景 | 可能原因 | 解决方案 |
---|---|---|
YUM 安装失败,提示“未找到包” | YUM 源未正确挂载或配置错误 | 检查 mount 命令是否成功,确认 local.repo 的 baseurl 路径正确 |
依赖包缺失导致安装中断 | 本地源未包含完整依赖链 | 使用 yum deplist 包名 查看依赖,补充下载缺失包并重新生成元数据 |
元数据生成失败 | 存储空间不足或权限问题 | 确保 /opt/yum_repo 有足够空间,以 root 权限运行 createrepo |
FAQs
Q1:如何仅同步特定软件包(如只同步 nginx 相关包)?
A:可通过 reposync
结合 --packages
参数指定包名,或手动筛选 RPM 包。
reposync -r epel -p /opt/yum_repo --packages=nginx # 仅同步 EPEL 源中的 nginx 包
Q2:目标服务器无法访问源主机的 NFS 共享,怎么办?
A:首先检查源主机的 NFS 服务状态(systemctl status nfs
),确保防火墙允许 UDP/TCP 111 和 2049 端口;其次确认目标服务器的挂载参数正确(如 mount -t nfs 源主机IP:/dir /mnt
),若仍失败,尝试临时关闭防火墙测试。
通过以上步骤,即可在 CentOS 环境中构建稳定、高效的离线 YUM 源,满足企业内网的软件管理需求。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复