本文是在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
目录,并编辑内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [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 [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 [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 1 2 3 4 [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默认的公共目录。
1 [root@vdi pub]# mkdir -p /var/ftp/pub/repos/x86_64/
安装reposync同步工具 该工具包含在yum-utils
包中。
1 2 [root@vdi pub]# mkdir -p /var/ftp/pub/repos/x86_64/ [root@vdi pub]# yum install yum-utils
开始同步复制 依次同步复制这四个Yum仓库,由于文件量(约30GB)比较大,请预留足够的磁盘空间,而且这一步花费的时间会很长,需要耐心等待。
1 2 3 4 5 6 7 8 [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
:
1 [root@vdi x86_64]# yum install createrepo
在上一步的同步复制之后,会有如下四个目录
1 2 3 4 5 [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
目录),四个文件依次执行:
1 2 3 4 5 6 7 8 [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
:
1 2 [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
输入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [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源:
1 2 3 4 5 6 7 8 [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源移动到真正的部署环境中,开始在无外网的情况下使用 这一步很简单,你懂的…略过。
(完)