前言

米饭一直都不推荐使用 CentOS,因为 CentOS 的更新实在是太慢了,一个 Linux Kernel 的高危漏洞尽然可以比 RHEL 晚足足一个星期。但是 RHEL 体系的兼容性真的好了,在这方面这的确是 Debian 和 Ubuntu 不可以比的。不过还好,我发现了一个替代方案 —— Oracle Enterprise Linux(简称 OEL)。

介绍

一个商业系统的开源版本,是不能将其中的软件、组建拿过来直接用的,必须是通过源码重新编译一遍。CentOS 是开源社区所维护的所以更新速度总是慢半拍,例如 RHEL7 的 1611 版本只是16年11月发布的,但是 CentOS7 的 1611 版本却要到 12月 才能发布。

Oracle Enterprise Linux 则是由 Oracle 维护的 RHEL 源码重构版,在使用 Oracle 家的产品的时候特别是 Oracle Database 性能更是号称有百分之两位数的提升,那么夸张肯定不能信,不过提升肯定是有的。依旧是上面的 1611 版本,OEL 仅仅只比 RHEL 慢了一个星期,在脏牛漏洞上,也是非常及时的修复。

Oracle Enterprise Linux 完美兼容 RHEL,免费提供源代码、二进制文件、更新、可再发行、生产。如果要获得 RHEL 那样的商业技术支持,OEL 也宣称更便宜。具体 OEL 是怎么吹牛逼的:https://linux.oracle.com/switch/centos/

反正不管怎么样,我觉得 OEL 还是一个不错的选择。

安装

ISO镜像

全新安装的 ISO 镜像可以在 Oracle软件交付中下载,http://edelivery.oracle.com/linux

CentOS升级

无论是国内的阿里云、腾讯云还是国外的DO一般都是不会提供 OEL 的,不过没关系,因为 OEL 是完美兼容 RHEL 的,自然也完美兼容 CentOS,换个软件源就可以升级了~

一、 将服务器镜像换成 CentOS 6 或者 7,然后在 SSH 中输入,就会自动更换到 OEL 的全球CDN源,并安装Key:

wget https://linux.oracle.com/switch/centos2ol.sh 
sh centos2ol.sh

二、 然后再运行下面命令,更新至 OEL:

yum distro-sync

三、如果提示错误了:

Running transaction check
Running transaction test

Transaction check error:
  file /usr/share/man/man5/limits.conf.5.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man5/pam_env.conf.5.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man8/faillock.8.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man8/pam_env.8.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man8/pam_exec.8.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man8/pam_faillock.8.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man8/pam_unix.8.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man8/pam_userdb.8.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64
  file /usr/share/man/man8/pwhistory_helper.8.gz from install of pam-1.1.8-18.el7.i686 conflicts with file from package pam-1.1.8-18.el7.x86_64

Error Summary

四、先安装 yum-downloadonly

yum install -y yum-downloadonly

五、安装 pam/tmp

yum install pam.i686 -y --downloadonly --downloaddir=/tmp

六、查看 pam 的 i386 rpm包的版本号,因为不同系统的 pam 版本号不一样:

yum list pam

例如,我这里的是:

    pam.i686    1.1.8-18.el7   ol7_latest

七、强制安装 pam 及其依赖

cd /tmp
rpm -ivh --force --nodeps pam-1.1.8-18.el7.i686.rpm
yum reinstall pam.i686

八、再运行下面命令,更新至 OEL:

yum distro-sync

九、查看系统:

[root@www.mf8.biz tmp]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: OracleServer
Description:    Oracle Linux Server release 7.4
Release:    7.4
Codename:   n/a

[root@www.mf8.biz tmp]# uname -a
Linux centos-512mb-ams3-01 3.10.0-693.el7.x86_64 #1 SMP Wed Aug 2 06:49:08 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux

软件更新

截止北京时间 2017年8月9日,12点的软件版本状况:

CentOS


[root@centos-512mb-sgp1-01 ~]# uname -a
Linux centos-512mb-sgp1-01 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

m4.x86_64   1.4.16-10.el7

automake.noarch 1.13.4-3.el7

libtool.x86_6   2.4.2-22.el7_3

libtasn1.i686   3.8-3.el7   

openssl.x86_64  1:1.0.1e-60.el7_3.1

mariadb-server.x86_64   1:5.5.52-1.el7

gcc.x86_64  4.8.5-11.el7

nfs-utils.x86_64    1:1.3.0-0.33.el7_3

OEL


[root@centos-512mb-ams3-01 ~]# uname -a
Linux centos-512mb-ams3-01 3.10.0-693.el7.x86_64 #1 SMP Wed Aug 2 06:49:08 PDT 2017 x86_64 x86_64 x86_64 GNU/Linux

m4.x86_64   1.4.16-10.el7

automake.noarch 1.13.4-3.el7

libtool.x86_64  2.4.2-22.el7_3

libtasn1.i686   4.10-1.el7

openssl.x86_64  1:1.0.2k-8.0.1.el7

mariadb-server.x86_64   1:5.5.56-2.el7

gcc.x86_64  4.8.5-16.el7

nfs-utils.x86_64    1:1.3.0-0.48.0.1.el7

可见,OEL 的版本和 CentOS 基本上是一样的,毕竟大家都是 RHEL 重新编译的,在更新速度上,由于 OEL 已经快要更新 1707 即 7.4 了,而 CentOS 还保留在 1611 即 7.3,所以可以看到补丁号,OEL 明显要新很多。

其他值得注意的就是 libtasn1 和 openssl 是明显不同的,为了 HTTP/2 看来升级到 openssl 1.0.2 这个是真的值得表扬,方便用户,不需要自行编译!