[实验]虚拟实验环境中创建内网yum仓库

本文介绍如何在虚拟机环境中搭建适用于Centos6/Centos7的内网yum仓库,包括获取rpm包、生成repodata信息、安装文件共享服务及配置客户端仓库等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境说明:整个环境都为我的虚拟机试验环境 ,搭建的仓库主要为Centos6 /Centos7 提供服务。仓库暂时就是基本的光盘中的仓库,以及epel仓库。

创建内网的yum仓库

yum 的在安装软件包时,首先会根据 /etc/yum.repo.d/*.repo中的配置查找服务端。后与当作yum仓库的服务器端进行通信,获取服务器中软件仓库的的repodata软件仓库元数据,如果有缓存则在本地换缓存中查找。(缓存为之前安装软件包时获取到的数据,但是不一定是最新的。所以可以使用yum clean命令 清空缓存。)
所以yum为c/s架构。在搭建内网的yum仓库时,需要在服务端与客户端同时做更改。

创建yum仓库的步骤如下 :
序号内容
1.获取rmp软件包
2.生成repodata信息
3.安装服务端的文件共享服务,可以是http/ftp等
4.在客户机创建YUM仓库的配置文件,即/etc/yum.repo.d/下的.repo文件

  1. 获取rpm软件包
    光盘中的rpm包,在虚拟机中创建两个虚拟的光驱,将光盘挂载上去(centos 6是两张光盘)。将其中的软件包拷贝出来 。
    epel的rpm包使用wget 随便从一个镜像站点上下载下来
  2. 生成repodata信息,并将目录打包成光盘
    1. 使用 createrepo进行创建文件repodata 文件夹及其元属性。
      createrepo /mnt/epel/7_repo
      createrepo /mnt/epel/6_repo
    2. 将得到的文件打包成光盘
      mkisofs –o /mnt/6_epel_x86.iso –v –r /mnt/epel/6_repo
      mkisofs –o /mnt/7_epel_x86.iso –v –r /mnt/epel/7_repo
    3. 在当作服务端的虚拟机上创建足够的虚拟光驱,将生成好的光盘 挂载上去
  3. 安装在服务端安装ftp服务器
    使用yum安装vsftpd
yum install vsftpd
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * extras: mirrors.163.com
 * updates: mirrors.btte.net
base                               | 3.7 kB     00:00     
extras                             | 3.4 kB     00:00     
updates                            | 3.4 kB     00:00     
解决依赖关系
--> 执行事务检查
---> Package vsftpd.x86_64 0:2.2.2-24.el6 will be 安装
--> 完成依赖关系计算
总下载量:156 k
Installed size: 340 k
确定吗?[y/N]:y
下载软件包:
vsftpd-2.2.2-24.el6.x86_64.rpm     | 156 kB     00:00     
运行 rpm_check_debug 
执行事务测试
事务测试成功
执行事务
  正在安装   : vsftpd-2.2.2-24.el6.x86_64             1/1 
  Verifying  : vsftpd-2.2.2-24.el6.x86_64                                                   1/1 

已安装:
  vsftpd.x86_64 0:2.2.2-24.el6                                                                  

完毕!

将光盘挂载到/var/ftp下的目录

  1. 配置客户端的yum仓库配置文件
直接写脚本实现了:
#
sys_v=`cat /etc/centos-release`
ser_ip=0
{ ping -w 1 -c 1 10.1.1.1 &> /dev/null && ser_ip="ftp://10.1.1.1"; } ||{ ping -w 1 -c 1 172.17.253.104 &>/dev/null && ser_ip="ftp://172.17.253.104"; }
[[ "${ser_ip}" == "0" ]] && echo "您正在去火星的路上"&& exit 6 
case ${sys_v} in

    *6.8* )
        repo_txt="${ser_ip}/6.8_repo"
        epel_txt="${ser_ip}/6_epel"
        name_txt_1="6.8-base"
        name_txt_2="6.8-epel"
        ;;
    *6.9* )
        repo_txt="${ser_ip}/6.9_repo"
        epel_txt="${ser_ip}/6_epel"
        name_txt_1="6.9-base"
        name_txt_2="6.9-epel"
        ;;
    *7.2.1511* )
        repo_txt="${ser_ip}/1511_repo"
        epel_txt="${ser_ip}/7_epel"
        name_txt_1="7.2-base"
        name_txt_2="7.2-epel"
        ;;
    *7.3.1611* )
        repo_txt="${ser_ip}/1611_repo"
        epel_txt="${ser_ip}/7_epel"
        name_txt_1="7.3-base"
        name_txt_2="7.3-epel"
        ;;
    * )
        echo "未知版本"&& exit
        ;;
esac            

dir_name="back-${RANDOM}"

until mkdir "/etc/yum.repos.d/${dir_name}" ;do
    dir_name="back-${RANDOM}"
done    

mv /etc/yum.repos.d/* /etc/yum.repos.d/${dir_name}

cat > "/etc/yum.repos.d/Jin-base.repo" << END
[base]
name=${name_txt_1}
baseurl="${repo_txt}"
enabled=1
gpgcheck=0
cost=999

[epel]
name=${name_txt_2}
baseurl="${epel_txt}"
enabled=1
gpgcheck=0
cost=1000
END
<think>嗯,用户需要在内网环境搭建Yum源服务器。用户明确引用了站内四个关于搭建内网Yum源的资料片段,从这些引用中能看到用户的关键需求点:无外网访问权限、需要批量管理多台服务器、涉及CentOS7环境。注意到引用[1]提到要用createrepo工具制作仓库,引用[2]强调下载完整系统镜像的重要性,引用[3]给出具体的httpd服务配置示例,引用[4]则说明ISO挂载到web目录的操作。这些引用很完整,说明用户已经做过一定调研。用户的核心诉求其实分两层:基础层是完成Yum服务器搭建,但更深处可能是想实现高效的离线软件管理。考虑到企业环境,可能需要补充两个隐性需求:版本兼容性(用户系统是CentOS7.8)和后续维护方案。准备在回复时重点突出四个技术环节:httpd服务器搭建、ISO资源处理、createrepo建、客户端配置。特别要注意的是引用[4]中提到的mkdir路径带{6,7}版本号的细节,说明用户环境可能存在多版本系统,这个信息很重要。安全相关设置也不能少。用户引用中多次提到关闭防火墙和SELinux,虽然这是实验环境常见做法,但在生产环境应该补充firewall-cmd放行http服务的替代方案。</think> 根据引用内容,以下是内网搭建Yum源服务器的详细步骤: ### 一、基础环境准备 1. **服务器配置** - 操作系统:CentOS 7.8(引用[1]) - 主机环境确认: ```bash cat /etc/redhat-release # 查看系统版本 uname -a # 核对内核版本 ``` 2. **关闭防火墙与SELinux**(引用[1][4]) ```bash systemctl stop firewalld systemctl disable firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config reboot # 重启生效 ``` --- ### 二、搭建HTTP服务 1. **安装Apache** ```bash yum install httpd -y systemctl start httpd systemctl enable httpd ``` 2. **创建仓库目录**(引用[4]) ```bash mkdir -p /var/www/html/centos7/os/x86_64 ``` --- ### 三、部署Yum仓库 1. **挂载系统镜像**(引用[4]) ```bash # 上传ISO到服务器后执行 mount -t iso9660 /path/to/CentOS-7-x86_64-DVD-2003.iso /var/www/html/centos7/os/x86_64 ``` > **注意**:需将ISO文件中的`Packages`和`repodata`目录完整复制到挂载点 2. **创建仓库元数据**(引用[1][4]) ```bash yum install createrepo -y createrepo /var/www/html/centos7/os/x86_64 ``` 3. **添加索引页面**(引用[3]) 在`/var/www/html/index.html`添加访问指引: ```html <a href="http://[服务器IP]/centos7/os/x86_64">CentOS 7 仓库</a> ``` --- ### 四、客户端配置 1. **备份原有源** ```bash mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak ``` 2. **创建内网源配置文件** ```bash cat > /etc/yum.repos.d/local.repo <<EOF [local-base] name=CentOS Local Repository baseurl=http://[YUM服务器IP]/centos7/os/x86_64 gpgcheck=0 enabled=1 EOF ``` 3. **验证使用** ```bash yum clean all yum repolist yum install [软件包] # 测试安装 ``` --- ### 关键要点说明 1. **镜像完整性**:必须包含完整`Packages`和`repodata`目录(引用[2][4]) 2. **权限控制**:确保Apache用户有仓库目录读取权限 ```bash chown -R apache:apache /var/www/html/centos7 ``` 3. **版本匹配**:客户端需与仓库系统版本一致(如CentOS 7客户端访问CentOS 7仓库) --- ### 常见问题解决 - **包依赖缺失**:需用`yumdownloader`下载离线包补充到仓库 ```bash yum install yum-utils -y repotrack [包名] -p /var/www/html/centos7/os/x86_64 createrepo --update /var/www/html/centos7/os/x86_64 ``` - **HTTP访问失败**:检查`iptables -nL`是否开放80端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值