RHEL正版系统内部Yum源搭建部署

    这几天在公司的局域网内搭建了RHEL正版系统的Yum源,并且通过正向代理服务器可以定期更新Yum仓库,RHEL和Centos的Yum源搭建步骤还是有点区别,但是大致的原理还是一致的,而对此次搭建的过程都做了详细和完整的记录,搭建的Yum源包含RHEL7/RHEL6(64位和32)系统。

  一、Yum源搭建说明  

1、Yum源搭建流程说明

    Yum服务器利用正向代理服务器进行注册和订阅,订阅成功之后用reposync和rsync工具从官方yum源远程同步rpm包到本地目录,将本地rpm存放目录用createrepo工具作成本地yum仓库。然后用httpd进行url访问,其他客户端配置这台yum服务器为yum源既可使用yum服务。

2、服务器角色说明

① 代理服务器:为了保证内部Yum服务器网络安全,Yum服务器不会直接暴露,而是安装Squid,通过正向代理进行访问。

代理服务器需要能访问外网,开通以下的的访问权限:

    RHEL注册:subscription.rhsm.redhat.com (80和443)

    RHEL的yum仓库: cdn.redhat.com(80和443)

    EPEL的yum仓库: rsync.mirrors.ustc.edu.cn(80,443和873)

② Yum服务器:Yum仓库,存放RHEL7/RHEL6(64位、32位)的rpm包。Yum服务器不会直接连接外网,所以不会开通外网访问,并且由于yum仓库文件数量比较大,3套系统最低需要250G的磁盘空间,而且为了后续的可扩展性,最好将仓库目录单独挂载在LVM逻辑卷上。

③ 客户端:RHEL7、RHEL6(64位、32位)

3、 yum源说明

①RHEL官方源(以RHEL7为例)

    Red Hat Enterprise Linux 7 Server (RPMs):RHEL的基本源

    Red Hat Enterprise Linux 7 Server – Optional (RPMs):RHEL的可选源

    Red Hat Enterprise Linux 7 Server – Extras (RPMs):RHEL的扩展源

    Red Hat Developer Tools RPMs for Red Hat Enterprise Linux 7 Server:RHEL开发工具源

②第三方Yum源

    EPEL源:是由 Fedora Special Interest Group 为企业 Linux 创建、维护和管理的一个高质量附加包集合,适用于Red Hat Enterprise Linux (RHEL)

#以上5个Yum源基本覆盖日常所需的rpm安装下载,如果有特殊需求,后续可追加。

  二、代理服务器部署和配置(Squid)  

    代理服务器的部署和配置详细可参考另一篇文章,这里就不再做具体介绍;

    Squid正向代理服务器的搭建和配置

  三、Yum服务器配置部署  

1、Yum服务器开启外网访问代理

[root@rhel7 rhel]# vim /etc/profile
添加:
    export http_proxy=代理服务器IP:PORT
[root@rhel7 rhel]# . /etc/profile
[root@rhel7 rhel]#curl 
#成功访问,说明成功实现代理

2、Yum服务器注册和订阅

    Yum服务器需要同步远程的yum仓库RPM包文件至本地,所以Yum服务器需要注册和订阅,因为RHEL正版系统的Yum服务是收费的。

    关于RHEL如何注册和登录,可参考另外一篇文章:RHEL7正版系统注册和订阅

3、开启yum代理和配置repo

[root@rhel7 rhel]# vim /etc/yum.conf
添加:
    proxy=http://代理服务器IP:PORT
[root@rhel7 rhel]# yum repolist all
[root@rhel7 rhel]# vim /etc/yum.repos.d/redhat.repo
搜索:enabled = 1
改成:enabled = 0

Yum服务器本身是RHEL7的系统,但是只要配置了RHEL6的Yum源,一样可以远程同步RHEL6的RPM文件至本地目录,因此下面需要配置3个系统的Yum源。

① RHEL7的yum配置

[root@rhel7 rhel]# vim /etc/yum.repos.d/rhel7.repo
#为了便于管理和维护,单独配置repo文件

从/etc/yum.repos.d/redhat.repo文件中搜索以下4个repoID,然后复制repo的配置添加到rhel7.repo文件中,并且更改repoID后启用。

    ⑴ rhel-7-server-rpms

    ⑵ rhel-7-server-devtools-rpms

    ⑶ rhel-7-server-extras-rpms

    ⑷ rhel-7-server-optional-rpms

举例说明实例如下:

RHEL7的Yum配置                                          

② RHEL6-64位的yum配置

[root@rhel7 rhel]# cp /etc/yum.repos.d/rhel7.repo /etc/yum.repos.d/rhel6_64.repo
[root@rhel7 rhel]# vim /etc/yum.repos.d/rhel6_64.repo

    ⑴ rhel-7-server-rpms

    ⑵ rhel-7-server-extras-rpms

    ⑶ rhel-7-server-optional-rpms

这三个repo可以直接从rhel7中拿来用,只要修改相关信息即可,如下图所示:

需要修改的内容:

       REPOID:改为6_64

       Baseurl:不再使用变量,直接替换相应的值($releasever:$6Server,$basearch:x86_64)

       Name:改为6_64

       ui_repoid_vars:REHL6无需变量,删掉既可

RHEL6的yum源配置

而rhel-7-server-devtools-rpms在RHEL6中无法找到了,代替的是rhel6-server-dts2-6-rpms,如下图所示修改既可:

RHEL6的yum源配置

其中baseurl=https://cdn.redhat.com/content/dist/rhel/server/6/6Server/x86_64/devtoolset/2/os

③ RHEL6-32位的yum配置

[root@rhel7 rhel]# cp /etc/yum.repos.d/rhel6_64.repo /etc/yum.repos.d/rhel6_32.repo
[root@rhel7 rhel]# vim /etc/yum.repos.d/rhel6_32.repo

RHEL6-32位的yum配置跟64位的一样,只是baseurl中x86_64改成对应的i386,其他repoid和name对应修改既可,如下图所示:

RHEL6_32位的yum源配置

[root@rhel7 rhel]# yum clean all
[root@rhel7 rhel]# rm -rf /var/cache/yum
[root@rhel7 rhel]# yum makecache
[root@rhel7 rhel]# yum repolist

4、开始同步yum仓库

[root@rhel7 rhel]# yum -y install createrepo yum-utils
[root@rhel7 rhel]# mkdir -p /data/yum.repo/rhel/7/x86_64
[root@rhel7 rhel]# mkdir -p /data/yum.repo/rhel/6/x86_64
[root@rhel7 rhel]# mkdir -p /data/yum.repo/rhel/6/i386

① 同步4个RHEL7官方yum源

[root@rhel7 rhel]# reposync -m -r rhel7-server-rpms -p /data/yum.repo/rhel/7/x86_64
[root@rhel7 rhel]# reposync -m -r rhel7-server-devtools-rpms -p /data/yum.repo/rhel/7/x86_64
[root@rhel7 rhel]# reposync -m -r rhel7-server-optional-rpms -p /data/yum.repo/rhel/7/x86_64
[root@rhel7 rhel]# reposync -m -r rhel7-server-extras-rpms -p /data/yum.repo/rhel/7/x86_64

参数说明:

    -m:同步comps.xml文件,yum的分组信息表,如执行yum grouplist时会用到
    -r:repoID号
    -p:同步到本地的目录名称

② 同步4个RHEL6_64官方yum源

[root@rhel7 rhel]# reposync -m -r rhel6_64-server-rpms -p /data/yum.repo/rhel/6/x86_64
[root@rhel7 rhel]# reposync -m -r rhel6_64-server-optional-rpms -p /data/yum.repo/rhel/6/x86_64
[root@rhel7 rhel]# reposync -m -r rhel6_64-server-dts2-6-rpms -p /data/yum.repo/rhel/6/x86_64
[root@rhel7 rhel]# reposync -m -r rhel6_64-server-extras-rpms -p /data/yum.repo/rhel/6/x86_64

③ 同步4个RHEL6_32官方yum源

[root@rhel7 rhel]# reposync -m -r rhel6_32-server-rpms -p /data/yum.repo/rhel/6/i386
[root@rhel7 rhel]# reposync -m -r rhel6_32-server-optional-rpms -p /data/yum.repo/rhel/6/i386
[root@rhel7 rhel]# reposync -m -r rhel6_32-server-dts2-6-rpms -p /data/yum.repo/rhel/6/i386
[root@rhel7 rhel]# reposync -m -r rhel6_32-server-extras-rpms -p /data/yum.repo/rhel/6/i386

④ 同步第三方的EPEL源

[root@rhel7 rhel]# vim /etc/profile
添加:
       export RSYNC_PROXY="代理服务器IP:PORT"
[root@rhel7 rhel]#. /etc/profile
[root@rhel7 rhel]# yum -y install rsync
[root@rhel7 rhel]# mkdir -p /data/yum.repo/rhel/7/x86_64/epel
[root@rhel7 rhel]# mkdir -p /data/yum.repo/rhel/6/x86_64/epel
[root@rhel7 rhel]# mkdir -p /data/yum.repo/rhel/6/i386/epel

    RHEL7的EPEL源同步

[root@rhel7 rhel]# rsync -av --exclude=debug rsync://rsync.mirrors.ustc.edu.cn/epel/7/x86_64/ /data/yum.repo/rhel/7/x86_64/epel/
[root@rhel7 rhel]# rsync -av rsync://rsync.mirrors.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-7 /data/yum.repo/rhel/7/x86_64/epel/

    RHEL6_64位的EPEL源同步

[root@rhel7 rhel]# rsync -av --exclude=debug rsync://rsync.mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum.repo/rhel/6/x86_64/epel/
[root@rhel7 rhel]# rsync -av rsync://rsync.mirrors.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-6 /data/yum.repo/rhel/6/x86_64/epel/

    RHEL6_32位的EPEL源同步

[root@rhel7 rhel]# rsync -av --exclude=debug rsync://rsync.mirrors.ustc.edu.cn/epel/6/i386/ /data/yum.repo/rhel/6/i386/epel/
[root@rhel7 rhel]# rsync -av rsync://rsync.mirrors.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-6 /data/yum.repo/rhel/6/i386/epel/

5、创建Yum仓库

    由于yum源在国外的原因,所以在同步yum仓库的RPM包时,有些文件可能下载失败,而这时候是无法直接制作repo的,这个情况我们可以继续多次尝试下载同步,有时候突然又可以下载了。还可以这么处理,我们通过查看发现,这些下载失败的文件都是无法通过yum list去获取的,说明应该是废弃不用的,而我们只要删掉既可。

例如:

创建Yum仓库

删掉既可:

[root@rhel7 rhel]#rm -rf /data/yum.repo/rhel/7/x86_64/rhel7-server-rpms/Packages/389-ds-base-libs-1.3.6.1-21.el7_4.x86_64.rpm

① RHEL7制作repo

[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/7/x86_64/rhel7-server-rpms/comps.xml /data/yum.repo/rhel/7/x86_64/rhel7-server-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/7/x86_64/rhel7-server-optional-rpms/comps.xml /data/yum.repo/rhel/7/x86_64/rhel7-server-optional-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/7/x86_64/rhel7-server-devtools-rpms/comps.xml /data/yum.repo/rhel/7/x86_64/rhel7-server-devtools-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/7/x86_64/rhel7-server-extras-rpms/comps.xml /data/yum.repo/rhel/7/x86_64/rhel7-server-extras-rpms

#EPEL源同步的时候已经把repodata下载下来了,所以不需要再自己手动create。

② RHEL6_64制作repo

[root@rhel7 rhel]# createrepo -g /data/yum.repo/rhel/6/x86_64/rhel6_64-server-rpms/comps.xml /data/yum.repo/rhel/6/x86_64/rhel6_64-server-rpms/
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/6/x86_64/rhel6_64-server-optional-rpms/comps.xml /data/yum.repo/rhel/6/x86_64/rhel6_64-server-optional-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/6/x86_64/rhel6_64-server-dts2-6-rpms/comps.xml /data/yum.repo/rhel/6/x86_64/rhel6_64-server-dts2-6-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/6/x86_64/rhel6_64-server-extras-rpms/comps.xml /data/yum.repo/rhel/6/x86_64/rhel6_64-server-extras-rpms

③ RHEL6_32制作repo

[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/6/i386/rhel6_32-server-rpms/comps.xml /data/yum.repo/rhel/6/i386/rhel6_32-server-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/6/i386/rhel6_32-server-optional-rpms/comps.xml /data/yum.repo/rhel/6/i386/rhel6_32-server-optional-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/6/i386/rhel6_32-server-dts2-6-rpms/comps.xml /data/yum.repo/rhel/6/i386/rhel6_32-server-dts2-6-rpms
[root@rhel7 rhel]#createrepo -g /data/yum.repo/rhel/6/i386/rhel6_32-server-extras-rpms/comps.xml /data/yum.repo/rhel/6/i386/rhel6_32-server-extras-rpms

④ 配置yum源

[root@rhel7 rhel]#yum -y install httpd
[root@rhel7 rhel]#rm -rf /var/www/html#
[root@rhel7 rhel]#ln -s /data/yum.repo /var/www/html
[root@rhel7 rhel]#cp /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release /data/yum.repo/rhel/7/x86_64/
[root@rhel7 rhel]#cp /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release /data/yum.repo/rhel/6/x86_64/
[root@rhel7 rhel]#cp /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release /data/yum.repo/rhel/6/i386/
 
[root@rhel7 rhel]#systemctl start httpd
[root@rhel7 rhel]#systemctl enable httpd

  四、客户端配置  

① RHEL7的客户端配置

[root@rhel7 rhel]# find /etc/yum.repos.d/ -type f -regex ".*repo" -exec mv {} {}.bak \;
[root@rhel7 rhel]#vim /etc/yum.repos.d/rhel7.repo

添加如下配置:

[rhel7-server-rpms]
baseurl = http://YUM服务器IP/rhel/7/$basearch/rhel7-server-rpms
name = Red Hat Enterprise Linux 7 Server (RPMs)
gpgkey = http://YUM服务器IP/rhel/7/$basearch/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[rhel7-server-optional-rpms]
baseurl = http://YUM服务器IP/rhel/7/$basearch/rhel7-server-optional-rpms
name = Red Hat Enterprise Linux 7 Server - Optional (RPMs)
gpgkey = http:// YUM服务器IP /rhel/7/$basearch/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[rhel7-server-extras-rpms]
baseurl = http://YUM服务器IP/rhel/7/$basearch/rhel7-server-extras-rpms
name = Red Hat Enterprise Linux 7 Server - Extras (RPMs)
gpgkey = http://YUM服务器IP/rhel/7/$basearch/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[rhel7-server-devtools-rpms]
baseurl = http://YUM服务器IP/rhel/7/$basearch/rhel7-server-devtools-rpms
name = Red Hat Developer Tools RPMs for Red Hat Enterprise Linux 7 Server
gpgkey = http://YUM服务器IP/rhel/7/$basearch/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://YUM服务器IP/rhel/7/$basearch/epel
enabled=1
gpgcheck=1
gpgkey=http://YUM服务器IP/rhel/7/$basearch/epel/RPM-GPG-KEY-EPEL-7
[root@rhel7 rhel]#yum repolist

② RHEL6-64的客户端配置

[root@rhel7 rhel]# find /etc/yum.repos.d/ -type f -regex ".*repo" -exec mv {} {}.bak \;
[root@rhel7 rhel]# vim /etc/yum.repos.d/rhel6_64.repo

添加如下配置:

[rhel6_64-server-rpms]
baseurl = http://YUM服务器IP/rhel/6/x86_64/rhel6_64-server-rpms
name = Red Hat Enterprise Linux 6_64 Server (RPMs)
gpgkey = http://YUM服务器IP/rhel/6/x86_64/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[rhel6_64-server-optional-rpms]
baseurl = http://YUM服务器IP/rhel/6/x86_64/rhel6_64-server-optional-rpms
name = Red Hat Enterprise Linux 6_64 Server - Optional (RPMs)
gpgkey = http://YUM服务器IP/rhel/6/x86_64/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[rhel6_64-server-extras-rpms]
baseurl = http://YUM服务器IP/rhel/6/x86_64/rhel6_64-server-extras-rpms 
name = Red Hat Enterprise Linux 6_64 Server - Extras (RPMs) 
gpgkey = http://YUM服务器IP/rhel/6/x86_64/RPM-GPG-KEY-redhat-release 
enabled = 1
gpgcheck = 1
 
[rhel6_64-server-dts2-6-rpms]
baseurl = http://YUM服务器IP/rhel/6/x86_64/rhel6_64-server-dts2-6-rpms 
name = Red Hat Developer Toolset 2 RPMs for Red Hat Enterprise Linux 6_64 Server
gpgkey = http://YUM服务器IP/rhel/6/x86_64/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[epel]
name=Extra Packages for Enterprise Linux 6_64
baseurl=http://YUM服务器IP/rhel/6/x86_64/epel
enabled=1
gpgcheck=1
gpgkey=http://YUM服务器IP/rhel/6/x86_64/epel/RPM-GPG-KEY-EPEL-6
[root@rhel7 rhel]#yum repolist

③ RHEL6-32的客户端配置

[root@rhel7 rhel]# find /etc/yum.repos.d/ -type f -regex ".*repo" -exec mv {} {}.bak \;
[root@rhel7 rhel]# vim /etc/yum.repos.d/rhel6_32.repo

添加如下配置:

[rhel6_32-server-rpms]
baseurl = http://YUM服务器IP/rhel/6/i386/rhel6_32-server-rpms
name = Red Hat Enterprise Linux 6_32 Server (RPMs)
gpgkey = http://YUM服务器IP/rhel/6/i386/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[rhel6_32-server-optional-rpms]
baseurl = http://YUM服务器IP/rhel/6/i386/rhel6_32-server-optional-rpms
name = Red Hat Enterprise Linux 6_32 Server - Optional (RPMs)
gpgkey = http://YUM服务器IP/rhel/6/i386/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[rhel6_32-server-extras-rpms]
baseurl = http://YUM服务器IP/rhel/6/i386/rhel6_32-server-extras-rpms 
name = Red Hat Enterprise Linux 6_32 Server - Extras (RPMs) 
gpgkey = http://YUM服务器IP/rhel/6/i386/RPM-GPG-KEY-redhat-release 
enabled = 1
gpgcheck = 1
 
[rhel6_32-server-dts2-6-rpms]
baseurl = http://YUM服务器IP/rhel/6/i386/rhel6_32-server-dts2-6-rpms 
name = Red Hat Developer Toolset 2 RPMs for Red Hat Enterprise Linux 6_32 Server
gpgkey = http://YUM服务器IP/rhel/6/i386/RPM-GPG-KEY-redhat-release
enabled = 1
gpgcheck = 1
 
[epel]
name=Extra Packages for Enterprise Linux 6_32
baseurl=http://YUM服务器IP/rhel/6/i386/epel
enabled=1
gpgcheck=1
gpgkey=http://YUM服务器IP/rhel/6/i386/epel/RPM-GPG-KEY-EPEL-6

[root@rhel7 rhel]#yum repolist

至此,各客户端已经配置完成并且可以使用Yum源进行安装更新。

  五、Yum服务器自动更新  

    Yum源的更新将通过编写shell脚本,添加到crontab中,实现定时定期自动更新。

    Yum自动更新脚本

Jimmy's Blog ,版权所有丨如未注明,均为原创丨本网站采用BY-NC-SA协议进行授权,转载请注明转自:https://www.xjimmy.com/rhel_yum.html

2 thoughts on “RHEL正版系统内部Yum源搭建部署”

  1. zy

    文中有段话:
    而rhel-7-server-devtools-rpms在RHEL6中无法找到了,代替的是rhel6-server-dts2-6-rpms,如下图所示修改既可:

    在你的这一篇文章中,写到了关于这个不同系统版本所使用的 .repo 文件内容
    repo id 的名字在文件中是写在 [ ] 里面的,然后你说找不到 “rhel6-server-dts2-6-rpms”
    我个人测试了一下,repo id 名字其实是没关系的,在使用 reposync 的时候,只会根据baseurl提供的地址去同步的吧? 所以你直接用 rhel-6-server-devtools-rpms 应该也没关系的,我不知道你当时是不是出于这种想法才这样写的…

    1. 是的,使用reposync同步的时候,只跟baseurl地址有关系,而repo id只是一个标识作用。

Leave a Comment