1、背景

服务器: Linux centos 8.3 阿里云

好久没维护过服务器的环境了。
只记得自己之前用的服务的的yum python都是2.x版本, 自己部署应用都是后装的 3.x版本。 这次在开发 深度学习服务使用的 python3.10版本。所以部署时,见服务器还是3.6版本。如果就删掉了3.6版本的python的环境。然后源码编译安装python3.10。
但是后续出现了很多问题。

2、问题

1、提示openssl 版本低

SSLError Cant connect to HTTPS URL because the SSL module is not available

需要下载高版本的openssl, 编译安装python3.10时, 在configure 时加上 新版本openssl的路径。
如:

./configure --prefix=/usr/local/python3.10 --with-openssl=/usr/local/openssl

但是在编译安装openssl 时,报错 :

Can't locate ExtUtils/MakeMaker.pm in @INC"

可以用yum来安装:

yum install perl-ExtUtils-MakeMaker

但是报下面的错。

2、 模块缺失

安装过程过程中出现一个比较麻烦的问题是:

ImportError: No module named 'encodings'

这个模块是 3.x版本才有。

Could not find platform independent libraries <prefix>

python环境设置不对。

根据以上问题,可以判断时应为yum依赖的python环境发生变化,导致yum不可用。
因此,可以重新修复python环境或者重装yum。
此处, 由于之前一直以为yum依赖python 2.x , 但是安装后,yum并没有可用。 因此就采取重装yum 的方式(这时才发现,应该安装python3.x而不是2.x)。

3、安装 yum

步骤: (1)查看系统版本,确定rpm文件下载路径 (2)下载python、yum相关的rpm文件。 (3)安装python、yum。(4)配置yum源

删除已有yum:

rpm -aq|grep yum|xargs rpm -e --nodeps

(1)查看系统版本,确定rpm文件下载路径

查看系统版本:

cat /etc/redhat-release

然后去:

https://vault.centos.org/

找与自己系统相关的资源文件。 (此处,也可以使用其他的镜像,不一定是vault)。

比如: 自己的服务器:

CentOS Linux release 8.3.2011

资源文件目录:

https://vault.centos.org/8.3.2011/BaseOS/x86_64/os/Packages/

(2)下载python、yum相关的rpm文件。

看到网上很多人都列举出了所有与python、yum相关的文件。但是自己一个一个找麻烦,另外别人的系统跟自己的系统可能不一样,因此下载的文件名可以不一样。 所以我采用js直接采集所有python、yum相关的文件地址。

资源文件目录页面 -> 鼠标右键 -> 审查(inspect) -> 控制台(console),执行一下js代码:

ele = document.getElementById("indexlist")
subElements = ele.getElementsByTagName("a")
res = []
for(var i=0; i<subElements.length; i++) {
	 if( subElements[i].href.toLowerCase().indexOf("rpm") == -1) {
              continue;
     }
      if( subElements[i].href.toLowerCase().indexOf("python") != -1 || subElements[i].href.toLowerCase().indexOf("yum") != -1 ) {
           res.push(" wget   " + subElements[i].href)
      }
}

console.log(res)

右键 【复制object】,复制出来的res可以在python中print每一行,然后复制,在终端执行命令,下载所有rpm文件。比如:

wget https://vault.centos.org/8.3.2011/BaseOS/x86_64/os/Packages/platform-python-3.6.8-31.el8.x86_64.rpm

(3)安装python、yum

在rpm文件所在的目录里执行命令安装python、yum

安装python

rpm -ivh *python* --nodeps --force

安装yum

rpm -ivh *yum* --nodeps --force

注意: 命令中的 --force 需要加上,不然可能会一直提示缺少一些依赖,烦死。

(4)配置yum源

自己使用的是阿里云的源,具体使用方法见:
阿里云CentOS 镜像 https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11uPvY4u

以上就可以完成yum与对应的python环境重置。

注意
如果完成yum重装后,还有提示说python环境不对时,一般应该是 ~/.local 下的配置文件,这时候可以将报错的文件直接删除就可以。