在安装Kilo版的OpenStack时,我们发现社区已经将Python升到2.7,而CentOS 6.3上仍然在使用2.6版的Python。本文记录将CentOS 6.3内置的Python2.6更新为Python2.7.9,完成后系统内两个版本的Python共存,可以通过不同的命令分别调用,效果如下:
# python -V Python 2.7.9 # python2.6 -V Python 2.6.6
1. 下载需要的Python源码包,
可以到https://www.python.org/downloads/source/选择需要的源码包,这里以Python2.7.9的Gzip包为例:
# wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
下载完成后解压安装包:
tar -xzf Python-2.7.9.tgz
进入解压得到的目录:
# cd Python-2.7.9
2. 编译源码并安装,
编译前配置未来安装的目录、以及编译时需要的支持:
# ./configure --prefix=/usr/local/python2.7 --with-bz2
# make
# make install
# make clean
说明:
(1). 选项--prefix指定未来Python2.7.9安装的位置,这里是/usr/local/python2.7/;
(2). --with-bz2为即将编译的Python添加bz2支持,在安装OpenStack时我们发现有些软件包使用了bzip2压缩,这就要为Python添加bz2支持,使用该选项的前提是CentOS上安装了bzip2以及bzip2-devel库:
# yum install -y bzip2 bzip2-devel
如果不需要bzip2功能,则不用添加“--with-bz2”选项;
如果之前编译Python时没有添加bzip2支持,安装CentOS的bzip2和bzip2-devel库并重新编译Python即可。
3. 将系统默认的python 命令指向新版的Python2.7.9:
ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python
4. 修改yum命令的配置
由于yum命令依赖于CentOS原有的Python2.6,这里需要将其脚本解释器指向旧版Python:
vim /usr/bin/yum
将第一行 #!/usr/bin/python 改为 #!/usr/bin/python2.6 ,这也是为什么更新Python时没有卸载原有Python的原因。