最近在工作中遇到一个问题,就是有一个功能希望在各种服务器上实现,而服务器上的系统版本可能都不一样,有的是CentOS 6。x,有的是CentOS 7。x。
需要说明的一点是,CentOS 6。x上的Python版本是2.6。x的,而CentOS 7。x上的Python版本是2.7。x的,这意味着我要实现的功能要适配这两种版本的系统。
你可能会说,这有什么的,自己写的时候,注意一下就好了。
事情其实没有那么容易,我要实现的功能是基于一个框架进行定制,需要修改不少的框架代码。这个框架在不同的Linux版本上,是有不同的版本的,而且差异巨大,曾经想过在CentOS 6。x和CentOS 7。x将这个框架安装成同一个版本,最后还是失败了,无法安装,原因就是高版本需要Python2.7,而CentOS 6。x上只有Python2.6 .
这个历史问题一直遗留到现在,由于这次的功能影响到的代码较多,如果要对两个版本的框架分别进行定制的话,需要花不少的时间,为了不维护两套版本,避免浪费多余的精力去做适配,我决定将CentOS 6。x上默认的Python2.6升级成Python2.7。
下面是整个升级过程,别看步骤简单,这些精简步骤的背后可是有不少的坑,被我踩过后,你可以直接使用了。
首先确认下你机器上的默认的Python版本
python - v美元 Python 2.6.6 那儿离python美元 python:/usr/bin/python/usr/bin/python2.6/usr/lib/python2.6/usr/lib64/python2.6/usr/local/bin/python/usr/include/python2.6/usr/share/man/man1/python.1.gz
由于我们将使用编译安装的方式,所以要安装下gcc,及一些工具包。
注意一定要全部安装,不然后面会发现有不少python的工具用不了。
比如不安装zlib会无法安装setuptools,不装openssl和openssl-devel,会无法使用pip工具等
美元yum安装gcc - y 百胜groupinstall美元“开发工具” 美元yum安装zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel - y
如果你这里未按照我的步骤来安装,你后面使用的时候出现了各种各样的问题,不要慌,只要再回来这里,把没安装的包装上,安装完成后,你需要进入第四步重新编译安装Python。
下载最新的Python2.7。x安装包,解压并进入指定目录
wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz美元 美元焦油zxvf Python-2.7.14.tgz $ cd Python-2.7.14
配置,编译,安装
#——prefix指定python安装的路径 $ ./configure——prefix=/usr/地方/python/python2.7 让美元 使美元安装
。/configure命令执行完毕之后创建一个文件<代码>创建Makefile> 代码,供下面的让命令使用执行<代码>,make install> 代码之后就会把程序安装到我们指定的目录中去。
配置是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令<代码>。/configure - help> 代码输出详细的选项列表。其中,——prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/地方/bin,库文件默认放在,/usr/地方/lib,配置文件默认放在,/usr/地方/等,其它的资源文件放在,<代码>/usr/地方/分享> 代码。如果配置,前缀,如:<代码>。/configure——prefix=/usr/地方/测试> 代码可以把所有资源文件放在<代码>/usr/地方/测试> 代码的路径中,不会杂乱。
用了,——prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。当然要卸载程序,也可以在原来的让目录下用一次<代码>,使卸载> 代码,但前提是让文件指定过卸载。
<强>查看系统的Python版本强>
python - v美元 Python 2.6.6
如果你查看还是Python 2.6.6版本,请继续看第六步。
<>强修改系统默认的Python版本强>
查看新安装的Python版本,当前系统的Python版本,并将系统指向的Python从伴有修改为2.7.x,再次查看当前系统的Python版本,已经变更为2.7.x
#这是我们刚安装的Python 美元/usr/地方/bin/python2.7 - v Python 2.7.14 #这是系统默认Python 美元/usr/bin/python - v Python 2.6.6 #备份原来的Python文件 美元mv/usr/bin/python/usr/bin/python.bak #建立软链接,将我们刚安装的python2.7做为系统默认版本 ln - s/usr/local/bin/python2.7/usr/bin/python #再次查看Python版本,已经成功切换过来 python - v美元 Python 2.7.14修改CentOS 6。x上默认Python的方法