一、前言

Linux系统中默认带的版本是Python2.7.5,升级到2.7.18。
本文档基于CentOS 7.9(2009) 编写

文档兼容性列表
  • CentOS 7.9(2009) 通过
  • Ubuntu 18.04 暂未验证
  • CentOS 7.6(1810) 暂未验证

    二、升级步骤

    2.1 安装常用编译工具(可选)

    出于最小化安装的原则,可先执行编译安装,再根据提示安装所需依赖。

    sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

    2.2 下载Python源码

    sudo wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz

    2.3 解压源码

    sudo tar xzf Python-2.7.18.tgz
    cd Python-2.7.18

    2.4 编译安装

    sudo ./configure --enable-optimizations
    sudo make altinstall

    注意,此处使用 make ltinstall命令(而非make install),防止覆盖系统默认的python命令。

    三、软链接

    Python2.7.18安装路径是/usr/local/bin/路径。

    /usr/local/bin/
    ├── 2to3
    ├── idle
    ├── pydoc
    ├── python2.7
    ├── python2.7-config
    └── smtpd.py

    系统自带的python在/usr/bin/路径

    /usr/bin/
    ├── pydoc
    ├── python -> python2
    ├── python2 -> python2.7
    ├── python2.7

    可以看到,在/usr/bin/路径下,python是指向python2的软链接,而python2又是指向python2.7的软连接。/usr/bin中的python2.7是系统自带的python,即python2.7.5版本。
    通过查看系统环境变量可知:

    [root@CentOS bin]# echo $PATH
    /iyunwen/server/jdk8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    在目前情况下,直接执行python命令,会执行/usr/bin/python2.7,即python2.7.5版本。
    由于在目前的$PATH中python2.7.18版本所在的/usr/local/bin路径优先于/usr/bin路径。执行python2.7命令时,会启动新安装的python2.7.18版本。

    3.1 修改软链接

    ln -snf /usr/local/bin/python2.7 /usr/bin/python2

    修改后不论是执行pythonpython2python2.7都将运行python2.7.18新版本

    3.2 恢复旧版本

    ln -snf /usr/python2.7 /usr/bin/python2

    将软连接修改回旧版本
    修改后执行pythonpython2python2.7将运行python2.7.5老版本
    执行python2.7将运行python2.7.18新版本

    3.3 删除新版本安装

    如不再需要新版本可删除/usr/local/bin/中属于python2.7.18的程序文件。

    /usr/local/bin/
    ├── 2to3
    ├── idle
    ├── pydoc
    ├── python2.7
    ├── python2.7-config
    └── smtpd.py

    注意,如果目录内有其他文件请谨慎删除。

四、覆盖升级

4.1 覆盖安装python

上文中采用共存方式升级,以便进行退回。
若需要覆盖升级,在进行2.4 编译安装步骤时使用如下命令:

sudo ./configure --enable-optimizations
sudo make install

使用make install安装后,程序会自动生产软连接。

/usr/local/bin/
├── 2to3
├── idle
├── pydoc
├── python -> python2
├── python2 -> python2.7
├── python2.7
├── python2.7-config
├── python2-config -> python2.7-config
├── python-config -> python2-config
└── smtpd.py

此时由于/usr/local/bin$PATH中的优先级更快,因此执行pythonpython2python2.7都将运行python2.7.18。
老版本python2.7.5文件可以删除。

标签: none

添加新评论