Rocky Linux 9.7 YUM源搭建实施手册

适配场景:校园实训内网、企业离线环境、批量服务器部署,解决外网源限速、超时、无订阅无法使用的问题,本地搭建全量离线镜像源,内网所有机器可无感使用、批量安装软件与部署Docker。


一、环境与前置说明

1. 基础环境要求

  • 系统版本:Rocky Linux 9.7 x86_64(最小化安装即可)

  • 搭建主机:可正常访问外网,用于同步镜像资源,内网互通

  • 硬盘要求:系统盘预留≥50G空闲空间(BaseOS+AppStream全量同步约30G,Docker源约2G)

  • 服务组件:httpd 文件共享服务、reposync 同步工具、createrepo 仓库索引工具

  • 固定配置:内网环境关闭防火墙、SELinux,避免访问拦截

2. 统一路径规划

  • 系统YUM源存放路径:/var/www/html/rocky9\.7/

  • Docker-CE源存放路径:/var/www/html/docker\-ce/

  • 内网访问地址:http://本地源服务器IP/


二、基础依赖工具安装

Rocky Linux 9 原生使用 dnf包管理器,完全兼容 yum 命令,先安装镜像源搭建必备工具:

复制代码
dnf install -y yum-utils createrepo httpd

工具功能说明

  • yum-utils:提供核心同步工具 reposync,用于拉取外网仓库全量RPM包

  • createrepo:生成YUM仓库必备的 repodata 元数据索引,客户端才能正常识别仓库

  • httpd:搭建轻量HTTP服务,对内网所有机器提供镜像源访问能力


三、系统原有Repo源备份

操作前先备份系统默认源,避免配置异常导致无法恢复,所有操作统一规范:

复制代码
# 创建备份目录
mkdir-p /etc/y.repos.d/backup
# 迁移所有原有repo文件至备份目录
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

四、配置外网同步源(阿里云Rocky9.7官方镜像)

Rocky Linux 9 分为 BaseOS (基础系统包)和 AppStream(应用扩展包)两个核心仓库,必须同步完整才能满足所有软件安装需求。

新建外网同步专用repo文件:

复制代码
vim /etc/yum.repos.d/rocky9.7-aliyun.repo

写入以下标准配置,关闭GPG校验避免同步报错,启用全量同步:

复制代码
[BaseOS]
name=Rocky Linux 9.7 - BaseOS - Aliyun Mirror
baseurl=https://mirrors.aliyun.com/rockylinux/9.7/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
priority=1

[AppStream]
name=Rocky Linux 9.7 - AppStream - Aliyun Mirror
baseurl=https://mirrors.aliyun.com/rockylinux/9.7/AppStream/x86_64/os/
gpgcheck=0
enabled=1
priority=1

配置完成后刷新缓存,校验源可用性:

复制代码
dnf clean all
dnf makecache
# 查看已启用仓库,确认BaseOS、AppStream正常加载
dnf repolist

五、创建本地镜像仓库目录

严格按照Rocky官方目录结构创建,避免客户端识别异常,同时创建Docker源目录:

复制代码
# 系统YUM源目录
mkdir-p /var/www/html/rocky9.7/{BaseOS,AppStream}
# Docker-CE镜像源目录
mkdir-p /var/www/html/docker-ce

六、同步外网RPM包至本地仓库

1. 同步Rocky Linux 9.7 系统基础仓库

使用 reposync全量拉取仓库所有RPM包,同步过程耗时根据网速决定,请勿中断:

复制代码
# 同步BaseOS基础仓库
reposync -r BaseOS -p /var/www/html/rocky9.7/

# 同步AppStream应用仓库
reposync -r AppStream -p /var/www/html/rocky9.7/

参数说明

  • -r:指定要同步的仓库ID,与repo文件内中括号名称一致

  • -p:指定RPM包下载的本地根路径

2. 同步Docker-CE 稳定版仓库

先配置Docker官方阿里云镜像源,再同步全量安装包:

复制代码
# 新建Docker同步源
vim /etc/yum.repos.d/docker-ce-aliyun.repo

写入适配Rocky9的配置:

复制代码
[docker-ce-stable]
name=Docker CE Stable - Aliyun Mirror
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/x86_64/stable/
gpgcheck=0
enabled=1

刷新缓存后同步Docker包:

复制代码
dnf makecache
reposync -r docker-ce-stable -p /var/www/html/

七、生成YUM仓库元数据索引

同步完成后,必须为每个仓库生成 repodata 索引,否则内网客户端无法识别仓库、无法安装软件。

1. 生成系统仓库索引

复制代码
# BaseOS仓库生成索引,-v输出详细日志
createrepo -v /var/www/html/rocky9.7/BaseOS

# AppStream仓库生成索引
createrepo -v /var/www/html/rocky9.7/AppStream

2. 生成Docker仓库索引

复制代码
createrepo -v /var/www/html/docker-ce-stable

注意事项 :后续增量更新同步包后,使用 createrepo \-\-update 目录路径 增量更新索引,无需全量重建,大幅提升效率。


八、启动HTTP服务并配置开机自启

复制代码
# 启动httpd服务
systemctl start httpd
# 设置开机自启
systemctl enable httpd
# 校验服务状态,确认active (running)
systemctl status httpd

九、内网环境安全配置(必做)

内网实训/离线环境,关闭防火墙和SELinux,避免内网机器访问源时出现连接拒绝、权限不足问题:

复制代码
# 关闭防火墙,禁止开机自启
systemctl stop firewalld
systemctl disable firewalld

# 临时关闭SELinux
setenforce 0

# 永久关闭SELinux,重启后生效
sed-i's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

十、内网客户端标准配置手册

内网所有Rocky Linux 9.7机器,无需配置外网、无需订阅,直接使用本地源,操作步骤统一标准化。

1. 客户端备份原有源

复制代码
mkdir-p /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

2. 一键部署本地系统源

新建本地源配置文件,将 192\.168\.xxx\.xxx 替换为本地源服务器真实内网IP

复制代码
vim /etc/yum.repos.d/rocky9.7-local.repo

写入标准配置:

复制代码
[BaseOS]
name=Rocky Linux 9.7 - Local BaseOS
baseurl=http://192.168.1.11/rocky9.7/BaseOS
gpgcheck=0
enabled=1
priority=1

[AppStream]
name=Rocky Linux 9.7 - Local AppStream
baseurl=http://192.168.1.11/rocky9.7/AppStream
gpgcheck=0
enabled=1
priority=1

3. 一键部署本地Docker源

复制代码
vim /etc/yum.repos.d/docker-ce-local.repo

写入配置:

复制代码
[docker-ce-local]
name=Docker CE Local Stable
baseurl=http://192.168.1.11/docker-ce-stable
gpgcheck=0
enabled=1

4. 客户端刷新缓存,正常使用

复制代码
dnf clean all
dnf makecache
# 查看本地仓库,确认加载成功
dnf repolist

# 测试安装,验证源可用性
dnf install -y tree wget net-tools
# 离线安装Docker
dnf install -y docker-ce docker-ce-cli containerd.io

十一、快捷一键部署命令(实训场景专用)

提前将repo文件放入httpd根目录,内网客户端可一键拉取配置,无需手动编辑文件:

复制代码
# 客户端一键获取系统源
curl http://192.168.1.11/rocky9.7-local.repo > /etc/yum.repos.d/rocky9.7-local.repo

# 一键获取Docker源
curl http://192.168.1.11/docker-ce-local.repo > /etc/yum.repos.d/docker-ce-local.repo

# 刷新缓存即可使用
dnf makecache

十二、日常维护与增量更新

配置定时任务,每日凌晨自动同步外网最新RPM包,增量更新仓库索引,保持本地源与外网同步:

复制代码
# 编辑定时任务
crontab -e

添加以下定时任务:

复制代码
# 每日凌晨1点同步系统仓库并更新索引
01 * * * reposync -r BaseOS -p /var/www/html/rocky9.7/ && createrepo --update /var/www/html/rocky9.7/BaseOS
01 * * * reposync -r AppStream -p /var/www/html/rocky9.7/ && createrepo --update /var/www/html/rocky9.7/AppStream

# 每日凌晨2点同步Docker仓库并更新索引
02 * * * reposync -r docker-ce-stable -p /var/www/html/ && createrepo --update /var/www/html/docker-ce-stable

十三、常见问题排查

  1. 客户端报错 repodata 不存在:检查本地服务器对应目录是否生成repodata文件夹,重新执行createrepo命令

  2. 客户端无法访问IP:检查服务器httpd服务状态、防火墙是否关闭、内网互通是否正常

  3. 同步包中断:重新执行reposync命令,工具会自动跳过已下载的包,增量续传

  4. 安装软件依赖报错:确认BaseOS和AppStream两个仓库都已同步、都已正常启用,不可单独使用单个仓库