我以为只有我不知道,不过看来大家都不知道。

很多时候,我们还得维护CentOS 6的设备。这件事很大程度上不是我们能决定的。但是CentOS 6的默认Python是2.6,很多最新的代码无法执行。例如Django,必须使用Python2.7/3.4/3.5。ansible好像也要求新版本Python。

作为CentOS管理员,第一个想法当然是编译。但是在CentOS 6下,不应该自行编译Python。因为Python的编译有很多坑,例如默认没有内置readline,没有内置sqlite。你不信编译了试试看?我直接从源码编译是不行的。

有的同学提出想法说,可以下在srpm包然后和Python2.7的source code做compatible。但是我要说一个比这个简单的多的官方方法——RHSCL。

RHSCL的全称是Red Hat Software Collections。旨在于在长期支持版本中提供最新版本的动态语言和数据库支持。这里是RHSCL支持的基础工具和版本。这里是说明性文档。具体方法如下:

# 1. Install a package with repository for your system:
# On CentOS, install package centos-release-scl available in CentOS repository:
$ sudo yum install centos-release-scl

# On RHEL, enable RHSCL repository for you system:
$ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms

# 2. Install the collection:
$ sudo yum install python27

# 3. Start using software collections:
$ scl enable python27 bash

一定要注意最后一条指令。RHSCL并没有将Python安装到系统路径下,因此需要用特别的指令来配置环境,启用python2.7。