createrepo .
生成元数据,配置Web服务器(如Apache)发布该目录,最后在客户端创建.repo文件指向仓库URL。在Linux系统(特别是Red Hat系列,如RHEL、CentOS)上搭建本地Yum仓库,可显著提升软件包管理效率,尤其适用于无外网环境或批量部署场景,以下是基于CentOS/RHEL 7+的详细步骤(其他版本需调整路径和依赖):
准备工作
-
系统要求
- 操作系统:CentOS 7/8 或 RHEL 7/8(需有效订阅)
- 工具:
createrepo
(核心工具)、httpd
(Web服务) - 磁盘空间:至少10GB(根据软件包数量调整)
-
安装必备工具
sudo yum install -y createrepo httpd
-
创建仓库目录
sudo mkdir -p /var/www/html/yum-repo # 作为Web访问根目录 sudo chmod -R 755 /var/www/html/yum-repo
构建仓库结构
-
存放软件包
- 将需共享的RPM包放入仓库目录:
# 示例:复制本地已下载的RPM包 sudo cp /path/to/rpms/*.rpm /var/www/html/yum-repo/
- 将需共享的RPM包放入仓库目录:
-
生成仓库元数据
cd /var/www/html/yum-repo sudo createrepo . # 生成repodata目录
- 更新仓库(新增/删除RPM后需执行):
sudo createrepo --update .
- 更新仓库(新增/删除RPM后需执行):
配置Web服务
-
启动Apache并设置开机自启
sudo systemctl start httpd sudo systemctl enable httpd
-
防火墙放行HTTP流量
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
-
验证Web访问
浏览器访问http://<服务器IP>/yum-repo/
,应显示RPM文件列表。
客户端配置
在需使用仓库的其他Linux机器上操作:
-
创建.repo配置文件
sudo vi /etc/yum.repos.d/local.repo
写入以下内容(替换
your-server-ip
):[local-yum] # 仓库ID name=Local Yum Repository baseurl=http://your-server-ip/yum-repo/ enabled=1 # 启用仓库 gpgcheck=0 # 不验证GPG签名(如需安全验证需配置gpgkey)
-
清理并验证仓库
sudo yum clean all # 清除缓存 sudo yum repolist # 检查仓库是否列出 sudo yum list available # 查看可用软件包
高级优化
-
定时同步远程仓库(可选)
- 使用
reposync
同步官方仓库到本地:sudo yum install -y yum-utils reposync --repoid=base --download_path=/var/www/html/yum-repo/
- 使用
-
GPG签名验证
- 生成密钥并签名仓库:
gpg --gen-key createrepo -v /var/www/html/yum-repo --gpg-key=<密钥ID>
- 客户端配置中添加:
gpgcheck=1 gpgkey=http://your-server-ip/yum-repo/RPM-GPG-KEY-local
- 生成密钥并签名仓库:
故障排除
-
问题1:客户端
yum repolist
不显示仓库
检查.repo
文件路径、baseurl
可访问性(用curl
测试),确保enabled=1
。 -
问题2:安装时提示依赖缺失
确保仓库包含所有依赖包,或用yumdownloader
下载完整依赖链。 -
问题3:HTTP 403错误
检查目录权限:sudo chown -R apache:apache /var/www/html/yum-repo
。
引用说明
- 官方文档
Red Hat:创建Yum仓库
Apache HTTP Server配置 - 核心工具
createrepo
源码:GitHub
重要提示:生产环境建议启用HTTPS和GPG签名以保障安全,定期更新仓库元数据(
createrepo --update
)确保客户端获取最新包信息。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/30464.html