当前位置: 代码网 > it编程>数据库>Mysql > CentOS 7离线环境下搭建共享YUM源的完整步骤

CentOS 7离线环境下搭建共享YUM源的完整步骤

2026年03月25日 Mysql 我要评论
在离线环境下搭建共享yum源是内网运维的常见需求。以下是在centos 7中完整实现该功能的步骤。一、环境说明yum源服务器:centos 7,ip地址假设为 192.168.1.100客户端机器:同

在离线环境下搭建共享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源内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com