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

 更新时间:2026年03月25日 08:33:08   作者:学亮编程手记  
本文介绍了在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源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Xampp和wordpress在Centos7上的搭建与使用

    详解Xampp和wordpress在Centos7上的搭建与使用

    通过实例给大家详细分析了Xampp和wordpress在Centos7上的搭建与使用,对此有需要的朋友可以学习下。
    2018-02-02
  • Linux 下读XML 的类详解及实现代码

    Linux 下读XML 的类详解及实现代码

    这篇文章主要介绍了 Linux 下读XML 的类详解及实现代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • Linux自动删除n天前日志及实例命令

    Linux自动删除n天前日志及实例命令

    这篇文章主要介绍了Linux自动删除n天前日志及实例命令,需要的朋友可以参考下
    2018-10-10
  • CentOS7挂载新数据盘的完整步骤

    CentOS7挂载新数据盘的完整步骤

    这篇文章主要给大家介绍了关于CentOS7挂载新数据盘的完整步骤,文中通过示例代码将实现的步骤介绍的非常详细,对大家学习或者使用CentOS7具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • linux内核双向链表详解

    linux内核双向链表详解

    Linux内核双向链表通过结构体嵌入node实现,使用container_of获取结构体地址,初始化用LIST_HEAD_INIT或INIT_LIST_HEAD,增删通过list_add/list_del操作,遍历用list_for_each_entry正反向宏,注意head节点不参与遍历,链表元素需为全局或静态变量,避免指针越界或内存崩溃
    2025-07-07
  • linux为repo 'AppStream'下载元数据失败的解决

    linux为repo 'AppStream'下载元数据失败的解决

    这篇文章主要介绍了linux为repo 'AppStream'下载元数据失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • centOS7安装jdk1.8的方法

    centOS7安装jdk1.8的方法

    这篇文章主要介绍了centOS7安装jdk1.8的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 在Linux服务器上安装Anaconda超详细教程

    在Linux服务器上安装Anaconda超详细教程

    本文档详细介绍了如何在Linux服务器上安装Anaconda,并创建及激活虚拟环境,以及如何在环境中安装Pytorch,从下载Anaconda安装包到解决可能出现的bug,再到设置环境变量和验证安装成功,每个步骤都配有清晰的说明和操作指令,需要的朋友可以参考下
    2025-02-02
  • Ubuntu18.04系统安装、配置Redis及phpredis扩展操作详解

    Ubuntu18.04系统安装、配置Redis及phpredis扩展操作详解

    这篇文章主要介绍了Ubuntu18.04系统安装、配置Redis及phpredis扩展操作,结合实例形式分析了Ubuntu18.04系统安装、配置Redis及phpredis扩展的相关原理、步骤、配置命令与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • Linux下使用Samba客户端访问Samba服务器的配置指南

    Linux下使用Samba客户端访问Samba服务器的配置指南

    在 Linux 系统中,Samba 提供了与 Windows 系统文件共享的便利方式,本文将详细介绍在 Ubuntu 和 Debian 系统下如何安装 Samba 客户端、访问共享资源,并实现远程目录挂载和开机自动挂载,需要的朋友可以参考下
    2025-08-08

最新评论