解决CentOS 7升级Python到3.6.6后yum出错问题总结

  • Post category:Linux

当我们把 CentOS7 升级到 Python3.6.6 后,系统自带的 yum 工具会出现不可预期的错误。本篇攻略主要介绍自行编译安装 Python3.6.6 的方法,并解决 yum 工具的问题。

一、概述

由于 CentOS7 自带的 Python2.7 版本较老,并且已经停止维护,因此我们需要手动升级 Python3 的版本。在安装 Python3.6.6 之后,我们需要重新安装 Pip 和其他相关的依赖库,最终才能使系统正常运行。

二、升级 Python3

2.1 下载 Python3.6.6

访问 Python 的官方网站,找到 Python3.6.6 的源码下载地址,并通过 wget 命令下载:

$ wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz

2.2 编译安装

解压 Python-3.6.6.tgz 包并进入解压后的目录:

$ tar -zxvf Python-3.6.6.tgz
$ cd Python-3.6.6

执行以下命令编译和安装 Python3.6.6:

$ ./configure
$ make
$ make install

2.3 修改软链接

新安装的 Python3.6.6 可能没有覆盖系统的 Python 路径 /usr/bin/python3,我们需要手动将其修改为新安装的 Python3.6.6 的路径。

$ rm /usr/bin/python3
$ ln -s /usr/local/bin/python3.6 /usr/bin/python3

2.4 安装 Pip

下载 get-pip.py 并安装:

$ wget https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py

2.5 安装依赖库

使用 pip3 安装依赖库:

$ pip3 install setuptools
$ pip3 install wheel

三、解决 yum 工具的问题

3.1 编辑 yum 配置文件

编辑 /usr/bin/yum 文件,将第一行的 Python 版本路径修改为 /usr/local/bin/python3.6

#!/usr/local/bin/python3.6

3.2 修改 C 安装器

编辑 /usr/libexec/urlgrabber-ext-down 文件,在第一行添加以下内容:

#!/usr/local/bin/python3.6

3.3 修改 yum-utils 脚本

编辑 /usr/bin/repoquery,将第一行的 Python 版本路径修改为 /usr/local/bin/python3.6

#!/usr/local/bin/python3.6

四、示例

示例一:安装 nginx

使用 yum 命令安装 nginx:

$ yum install nginx

修改 Nginx 配置文件并启动 Nginx 服务:

$ vim /etc/nginx/nginx.conf
$ systemctl start nginx

示例二:安装 epel-release

使用 yum 命令安装 epel-release:

$ yum install epel-release

更新软件包并检查:

$ yum update
$ yum list installed | grep epel

五、总结

通过上述方法,我们可以成功升级 CentOS7 上的 Python 版本,解决 yum 出错问题并保证系统正常运行。