在最新的CentOS release 6.6 (Final)(截至于2014年11月30日是最新)系统上默认自带的Python是2.6.6版本,可能是出于安全的原因,导致现有发行版本Python严重落后。在使用部分应用时,会有更高版本需求。这里特别需要注意的是由于多个关键的系统应用依赖于自带python,如果替换系统的python环境可能会导致很多难以预见的错误,比如yum等。本文讲述如何在CentOS上使用新路径(/usr/local)安装最新版本的Python。
本文即讲述如何在CentOS 6上安装Python 2.7和Python 3.4:
0、安装前预准备
#安装gcc yum install gcc gcc-c++ xz openssl*
1、查看版本
# python -V Python 2.6.6
2、下载解压
#Python 2.7.8 wget --no-check-certificate https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz tar -zxvf Python-2.7.8.tgz cd Python-2.7.8 #Python 3.4.2 wget --no-check-certificate https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz tar -zxvf Python-3.4.2.tgz cd Python-3.4.2
3、修改setup.dist, 增加ssl支持
cd Python2.7.8/Moudle vi Setup.dist # Socket module helper for SSL support; you must comment out the other # socket line above, and possibly edit the SSL variable: SSL=/usr/local/ssl _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
4、编译安装:
./configure --prefix=/usr/local/ make && make altinstall
由于多个关键的系统应用依赖于自带python,不建议修改默认python
ln -sf /usr/local/bin/python2.7 /usr/bin/python2.7 ln -sf /usr/local/bin/python3.4 /usr/bin/python3.4
验证:
# which python2.7 /usr/local/bin/python2.7 # which python3.4 /usr/local/bin/python3.4 # python2.7 -V Python 2.7.8 # python3.4 -V Python 3.4.2
5、修改系统路径(可选)
编译安装完成后,要替换掉系统自带的Python,但CentOS的yum依赖于Python工作,为了保证yum的正常运行,在替换前,先将自带的Python更名备份,方法如下:
mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python2.7 /usr/bin/python
验证:
python -V /usr/bin/python2.6 -V
6、已知影响
修改yum的python版本
vi /usr/bin/yum #!/usr/bin/python2.6
安装过程中的哪些报错:
编译报错:
./Modules/_ssl.c:1840: error: ‘SSLEAY_VERSION’ undeclared (first use in this function) make: *** [Modules/_ssl.o] Error 1
解决办法:
yum install openssl*