升级linux下的python版本

发布时间 2023-11-04 21:26:50作者: 傲气雄鹰

以centos7为例 将python升级到3.10.11

1、安装必备软件包:

## 第一步 基础包
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel gcc
## 第二步 安装db4-devel,必先安装epel-release
yum install epel-release
yum install db4-devel

 2、下载python3.10.11,并解压到指定目录/opt/tools

wget --no-check-certificate https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz 
tar -zxf Python-3.10.11.tgz -C ./

3、创建安装目录,并到上步解压目录Python-3.10.11下进行编译安装

mkdir /usr/local/python3.10
## 指定安装目录
./configure --prefix=/usr/local/python3.10

 编译时,若报如下错误,则需要先行处理

 

解决:

3.1 Python需要OpenSSL 1.1.1(换其它更高的版本可能会有不兼容的问题,笔者亲自试过,才又改回用openssl1.1.1q版本来编译),查看当前openssl版本

 

3.2 这里安装openssl-1.1.1q.tar.gz, 通过如命令下载源码并解压到指定目录

wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1q.tar.gz
tar -zxf
openssl-1.1.1q.tar.gz -C /opt/tools/

 

3.3  进入解压目录/opt/tools/openssl-1.1.1q,编译安装openssl

./config --prefix=/usr/local/openssl
make && make install

 

针对如下3.3.1-3.3.3的问题,若编译安装openssl没有出现,可忽略(如下的错误用的是openssl-3.1.4出现的)

编译时报/usr/bin/env: perl: No such file or directory,出现这种错误可能是没有安装prel(注:每个人的环境不一致),需要先安装prel

 

 3.3.1 先安装prel 所需的依赖

yum install readline-devel pcre-devel openssl-devel gcc

 

3.3.2 在 Linux 发行版下使用指定包管理软件,常常只能安装指定的perl,如果需要安装特定版本 perl,就需要编译安装,源码从这里获取: http://www.cpan.org/src/5.0/,以 perl 5.28.1 为例

## 下载源码
wget
http://www.cpan.org/src/5.0/perl-5.28.1.tar.gz
tar -xzf perl-5.28.1.tar.gz
cd perl-5.28.1
## 编译配置 ./Configure -des -Dprefix=/usr/local/perl
## 编译安装
make && make install
## 查看安装完成后的版本
perl -v

 

3.3.3 若出现如下错误,则需要创建pod2man的软链接

yum install perl-podlators

3.3.4 上述处理完后,查看是否安装成功 ,若出现如下错误 (注:openss记得拼上路径,即/usr/local/opensll/bin/opensll)

 

第一种解决方案:

更新共享库缓存:运行以下命令更新共享库缓存,这将刷新系统的共享库缓存,使系统能够正确找到和加载共享库

sudo ldconfig

再次检查库文件路径,运行以下命令检查库文件路径:

ldconfig -p | grep libssl.so.3

  • 如果没有输出或找不到该库文件,直接通过find 查找看是否有,

     

  • 若查找到了,则将它添加到共享库文件中,即编辑 /etc/ld.so.conf 文件并添加共享库文件所在的目录。例如,在文件中添加一行

find / -name libssl.so.1.1
## 对应libssl.so.3所在目录
/usr/local/openssl/lib64
## 再次刷新共享库缓存
sudo ldconfig

 

第二种解决方案:

执行以下命令即可:
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

echo “/usr/local/openssl/lib” >> /etc/ld.so.conf
ldconfig

 

3.4  替换老版本的 openssl
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl

 

4、解决完上述错误后,继续执行如命令编译安装Python-3.10.11

./configure --prefix=/usr/local/python3.10
make && make install
##创建python3软链接
ln -s /usr/local/python3.10/bin/python3.10 /usr/bin/python3
python3 --version

 

 

有如上结果输出,表示python3.10.11 版本已安装完成