CentOS 7离线环境下搭建共享YUM源的完整步骤
作者:学亮编程手记
本文介绍了在CentOS7中搭建HTTP/FTP共享YUM源的步骤,包括安装nginx/httpd、创建YUM源目录、配置nginx、添加rpm包、客户端配置、维护与扩展等内容,最后提供了一个简化添加rpm包的脚本示例,需要的朋友可以参考下
在离线环境下搭建共享YUM源是内网运维的常见需求。以下是在CentOS 7中完整实现该功能的步骤。
一、环境说明
- YUM源服务器:CentOS 7,IP地址假设为
192.168.1.100 - 客户端机器:同局域网内的其他CentOS 7虚拟机
- 共享协议:使用HTTP(nginx/apache)或FTP,本文以nginx为例
二、搭建YUM源服务器
1. 安装nginx(或使用httpd)
# 如果有本地ISO或已挂载的安装介质,先配置临时本地源 # 挂载CentOS 7安装ISO mkdir -p /mnt/cdrom mount -o loop /path/to/CentOS-7-x86_64-DVD.iso /mnt/cdrom # 配置临时本地repo(仅用于安装nginx等工具) cat > /etc/yum.repos.d/local.repo << EOF [local] name=Local Repository baseurl=file:///mnt/cdrom enabled=1 gpgcheck=0 EOF # 安装nginx yum install -y nginx # 启动nginx并设置开机自启 systemctl start nginx systemctl enable nginx # 确认防火墙允许80端口 firewall-cmd --permanent --add-service=http firewall-cmd --reload
2. 创建YUM源目录结构
# 创建主目录(nginx默认web根目录为/usr/share/nginx/html)
mkdir -p /usr/share/nginx/html/yum-repo/{centos7,updates,epel,local}
# 初始化repodata(以centos7目录为例)
# 如果没有rpm文件,先创建一个空的repodata
cd /usr/share/nginx/html/yum-repo/centos7
createrepo .
如果 createrepo 命令不存在,先安装:
yum install -y createrepo
3. 配置nginx显示目录列表(便于查看)
编辑 /etc/nginx/conf.d/yum.conf:
server {
listen 80;
server_name _;
location /yum-repo {
autoindex on; # 开启目录列表
autoindex_exact_size off;
autoindex_localtime on;
root /usr/share/nginx/html;
}
}重载nginx:
nginx -t systemctl reload nginx
此时可通过浏览器访问 http://192.168.1.100/yum-repo/ 验证。
三、往YUM源中添加新的RPM文件
1. 添加单个或多个rpm包
# 将rpm文件放入对应目录 cp /path/to/your-package.rpm /usr/share/nginx/html/yum-repo/local/ # 更新repodata(必须在添加后执行) cd /usr/share/nginx/html/yum-repo/local createrepo --update . # --update 只更新变更,速度快
2. 批量添加多个rpm包
# 假设所有rpm在/tmp/new-packages目录下 cp /tmp/new-packages/*.rpm /usr/share/nginx/html/yum-repo/local/ cd /usr/share/nginx/html/yum-repo/local createrepo --update .
3. 添加整个目录的rpm(如从光盘复制)
# 复制整个Packages目录(以centos7为例) cp -r /mnt/cdrom/Packages/*.rpm /usr/share/nginx/html/yum-repo/centos7/ cd /usr/share/nginx/html/yum-repo/centos7 createrepo --update .
四、客户端配置
在需要访问该YUM源的客户端机器上,创建repo文件。
1. 创建repo配置文件
cat > /etc/yum.repos.d/offline.repo << EOF [offline-centos7] name=Offline CentOS 7 Repository baseurl=http://192.168.1.100/yum-repo/centos7 enabled=1 gpgcheck=0 [offline-local] name=Offline Local Repository baseurl=http://192.168.1.100/yum-repo/local enabled=1 gpgcheck=0 EOF
2. 清理缓存并测试
yum clean all yum makecache yum repolist # 测试安装(以tree为例,假设该rpm已存在于源中) yum install -y tree
五、维护与扩展
1. 定期同步官方源(在有网络时)
如果偶尔能联网,可同步CentOS官方源到本地:
# 使用reposync同步(需先配置好在线repo) yum install -y yum-utils reposync --repoid=base --download_path=/usr/share/nginx/html/yum-repo/centos7/ createrepo --update /usr/share/nginx/html/yum-repo/centos7/
2. 删除不需要的rpm
rm /usr/share/nginx/html/yum-repo/local/unwanted-package.rpm cd /usr/share/nginx/html/yum-repo/local createrepo --update .
3. 定期清理旧版本(保留最新)
可编写脚本,使用 createrepo --update 配合 package-cleanup 等工具。
六、常见问题解决
| 问题 | 解决方法 |
|---|---|
客户端 yum makecache 报错 Cannot retrieve repository metadata | 检查服务器nginx是否正常,防火墙是否开放80端口,客户端能否 curl http://192.168.1.100/yum-repo/ |
| 添加rpm后客户端看不到新包 | 确保执行了 createrepo --update,并清理客户端缓存 yum clean all |
| 依赖关系报错 | 确保所有依赖的rpm都已放入源中,可使用 createrepo --update 自动处理依赖(但需rpm文件齐全) |
| gpgcheck警告 | 在客户端repo配置中设置 gpgcheck=0(离线环境可关闭验证) |
七、脚本化添加rpm(示例)
创建一个脚本 /root/add-to-yumrepo.sh 简化操作:
#!/bin/bash
# 用法: ./add-to-yumrepo.sh /path/to/*.rpm
REPO_PATH="/usr/share/nginx/html/yum-repo/local"
if [ $# -eq 0 ]; then
echo "Usage: $0 /path/to/rpm_files"
exit 1
fi
cp "$@" $REPO_PATH/
cd $REPO_PATH
createrepo --update .
echo "Done. Updated repodata in $REPO_PATH"
chmod +x /root/add-to-yumrepo.sh # 使用示例 ./add-to-yumrepo.sh /tmp/new/*.rpm
通过以上步骤,你就可以在离线环境中成功搭建共享YUM源,并灵活地添加新rpm包,供局域网内的其他虚拟机使用。
到此这篇关于CentOS 7离线环境下搭建共享YUM源的完整步骤的文章就介绍到这了,更多相关CentOS 7离线搭建共享YUM源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
