文章目录
  1. 1. 为什么需要本地Yum源
  2. 2. 为什么需要从官方复制Yum源
  3. 3. 测试环境
  4. 4. 第一步:在一个能上外网,网速很快的临时环境中,同步复制Oracle Public Yum中各个仓库的软件包到本地目录
    1. 4.1. 配置临时的外网Yum源
    2. 4.2. 安装并配置FTP
    3. 4.3. 创建本地Yum源的存放目录
    4. 4.4. 安装reposync同步工具
    5. 4.5. 开始同步复制
  5. 5. 第二步:从复制到本地的包建立本地Yum源
  6. 6. 第三步:将建立好的本地Yum源移动到真正的部署环境中,开始在无外网的情况下使用

本文是在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 ###开启;但是在安装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

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
[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源移动到真正的部署环境中,开始在无外网的情况下使用

这一步很简单,你懂的…略过。

(完)

文章目录
  1. 1. 为什么需要本地Yum源
  2. 2. 为什么需要从官方复制Yum源
  3. 3. 测试环境
  4. 4. 第一步:在一个能上外网,网速很快的临时环境中,同步复制Oracle Public Yum中各个仓库的软件包到本地目录
    1. 4.1. 配置临时的外网Yum源
    2. 4.2. 安装并配置FTP
    3. 4.3. 创建本地Yum源的存放目录
    4. 4.4. 安装reposync同步工具
    5. 4.5. 开始同步复制
  5. 5. 第二步:从复制到本地的包建立本地Yum源
  6. 6. 第三步:将建立好的本地Yum源移动到真正的部署环境中,开始在无外网的情况下使用