你可以在这里找到本文的原文。
本文是在Oracle Linux 6.5下,通过复制Oracle Public Yum源的方式建立一个完整的本地Yum源。由于只是出于测试和快速上手的目的,只进行了一次同步复制。在同步复制完成之后,就可以把外网切断,换到真正的测试和部署环境中使用本地的Yum源了。
为什么需要本地Yum源
在Oracle Linux下安装Oracle数据库,Oracle VDI以及其他Oracle产品时,通常都会需要连接外网从Oracle Public Yum中下载最新的安装包和依赖包。不得不说,这是最有效也是最安全的方法。但是,事实上并不是所有的测试和部署环境都能连接外网的,而且即使能连外网,由于带宽的限制,下载速度可能非常慢。这时,就需要建立本地的Yum安装仓库。
为什么需要从官方复制Yum源
虽然通过ISO镜像文件可以建立一个基本的本地Yum源,但是比起Oracle Public Yum源来说,ISO镜像中包含的软件包并不是最全的,也不是最新的(比如,Oracle VDI安装时需要的gdm_multiseat仓库在ISO镜像中就没有,还比如Oracle数据库安装时的依赖包在ISO镜像中也没有)。
测试环境
本文的思路如下(推荐使用Oracle VirtualBox部署虚拟机,这样就可以随意切换内外网环境了):
- 第一步:在一个能上外网,网速很快的临时环境中,同步复制Oracle Public Yum中各个仓库的软件包到本地目录
- 第二步:从复制到本地的包建立本地Yum源
- 第三步:将建立好的本地Yum源移动到真正的部署环境中,开始在无外网的情况下使用
接下来详细介绍每个步骤的实施过程。
第一步:在一个能上外网,网速很快的临时环境中,同步复制Oracle Public Yum中各个仓库的软件包到本地目录
这一步的测试环境和条件如下:
- Oracle Linux可以连接外网,准确的说是可以连接Oracle Pubic Yum
- 禁用了SELinux和iptables
配置临时的外网Yum源
首先需要保证能上外网,并能够访问public-yum.oracle.com
。
开始配置Yum源,把public-yum-ol6.repo
下载到/etc/yum.repo.s
目录,并编辑内容如下:
[ol6_u5_base]
name=Oracle Linux $releasever Update 5 installation media copy ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1 ###开启;但是在安装VDI时,如果你使用安装镜像(ISO)文件作为本地Yum源的话,这里不用开启
[ol6_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1 ###开启
[ol6_UEK_base]
name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/base/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1 ###开启;但是在安装VDI时,如果你使用安装镜像(ISO)文件作为本地Yum源的话,这里不用开启
[ol6_gdm_multiseat]
name=Oracle Linux 6 GDM Multiseat ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/gdm_multiseat/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1 ###开启
本文中,我们需要同步复制下面四个Yum仓库,所以在上面的配置文件中把这四个仓库全部启用:
- ol6_u5_base- 大概25GB以上
- ol6_addons - 大概5GB
- ol6_UEK_base
- ol6_gdm_multiseat - 大概2MB
安装并配置FTP
[root@vdi ~]# yum install vsftpd
[root@vdi ~]# chkconfig vsftpd on
[root@vdi ~]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
在安装完成后,无需任何配置,默认会将/var/ftp/pub
作为FTP的主目录。任意存放在这个目录下的文件都可以发布到FTP站点上,通过 ftp://localhost/pub
下载到。
创建本地Yum源的存放目录
这里使用FTP默认的公共目录。
[root@vdi pub]# mkdir -p /var/ftp/pub/repos/x86_64/
安装reposync同步工具
该工具包含在yum-utils
包中。
[root@vdi pub]# mkdir -p /var/ftp/pub/repos/x86_64/
[root@vdi pub]# yum install yum-utils
开始同步复制
依次同步复制这四个Yum仓库,由于文件量(约30GB)比较大,请预留足够的磁盘空间,而且这一步花费的时间会很长,需要耐心等待。
[root@vdi pub]# reposync --repoid=ol6_u5_base --repoid=ol6_u5_base -p /var/ftp/pub/repos/x86_64
...
[root@vdi pub]# reposync --repoid=ol6_addons --repoid=ol6_addons -p /var/ftp/pub/repos/x86_64
...
[root@vdi pub]# reposync --repoid=ol6_UEK_base --repoid=ol6_UEK_base -p /var/ftp/pub/repos/x86_64
...
[root@vdi pub]# reposync --repoid=ol6_gdm_multiseat --repoid=ol6_gdm_multiseat -p /var/ftp/pub/repos/x86_64
...
第二步:从复制到本地的包建立本地Yum源
先安装仓库创建工具createrepo
:
[root@vdi x86_64]# yum install createrepo
在上一步的同步复制之后,会有如下四个目录
[root@vdi x86_64]# pwd
/var/ftp/pub/repos/x86_64
[root@vdi x86_64]# ls
ol6_addons ol6_gdm_multiseat ol6_u5_base ol6_UEK_base
p/pub/repos/x86_64
其中,每个目录下都会有一个名为getPackage
的子目录,该目录中会存放下载到本地的各个软件包。接下来需要使用createrepo
创建Yum源的元数据(repodata
目录),四个文件依次执行:
[root@vdi x86_64]# createrepo /var/ftp/pub/repos/x86_64/ol6_u5_base/getPackage/
...
[root@vdi x86_64]# createrepo /var/ftp/pub/repos/x86_64/ol6_UEK_base/getPackage/
...
[root@vdi x86_64]# createrepo /var/ftp/pub/repos/x86_64/ol6_addons/getPackage/
...
[root@vdi x86_64]# createrepo /var/ftp/pub/repos/x86_64/ol6_gdm_multiseat/getPackage/
...
注意: 只有包含`repodata`的目录才可以当成Yum仓库!
接下来就可以配置本地Yum源了。
先备份public-yum-ol6.repo
,然后创建一个空的local.repo
:
[root@vdi x86_64]# mv /etc/yum.repos.d/public-yum-ol6.repo /etc/yum.repos.d/public-yum-ol6.repo.orig
[root@vdi x86_64]# vim /etc/yum.repos.d/local.repo
输入以下内容:
[ol6_u5_base]
name=ol6_u5_base
baseurl=ftp://localhost/pub/repos/x86_64/ol6_u5_base/getPackage
gpgcheck=0
enabled=1
[ol6_UEK_base]
name=ol6_UEK_base
baseurl=ftp://localhost/pub/repos/x86_64/ol6_UEK_base/getPackage
gpgcheck=0
enabled=1
[ol6_addons]
name=ol6_addons
baseurl=ftp://localhost/pub/repos/x86_64/ol6_addons/getPackage
gpgcheck=0
enabled=1
[ol6_gdm_multiseat]
name=ol6_gdm_multiseat
baseurl=ftp://localhost/pub/repos/x86_64/ol6_gdm_multiseat/getPackage
gpgcheck=0
enabled=1
测试一下本地Yum源:
[root@vdi x86_64]# yum repolist
...
Loaded plugins: security
ol6_gdm_multiseat | 2.9 kB 00:00
repo id repo name status
ol6_gdm_multiseat ol6_gdm_multiseat 9
repolist: 9
第三步:将建立好的本地Yum源移动到真正的部署环境中,开始在无外网的情况下使用
这一步很简单,你懂的...略过。
(完)
来源:oschina
链接:https://my.oschina.net/u/157257/blog/519695