环境:
centos7
CentOS Linux release 7.9.2009 (Core)
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
前言:
业务需求,需要在服务器上安装高版本python,但是在安装过程中,发现,高版本python,比如Python 3.10 需要 OpenSSL 1.1.1 或更高版本。默认的 CentOS 7 的 OpenSSL 版本可能较低,需要手动安装
手动升级openssl到3.x版本时,报错,报错信息如下
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=sclo-sclo error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"
解决方法:
来到/etc/yum.repos.d/目录,修改repo里,报错信息显示的地址
这里我就修改了
CentOS-SCLo-scl.repo CentOS-SCLo-scl-rh.repo 两个repo的链接,修改如下
baseurl=http://mirrors.aliyun.com/centos/ r e l e a s e v e r / o s / releasever/os/ releasever/os/basearch/
国内的镜像源推荐:
阿里云镜像URL: http://mirrors.aliyun.com/
清华大学镜像URL: https://mirrors.tuna.tsinghua.edu.cn/
中国科学技术大学镜像URL: https://mirrors.ustc.edu.cn/
上海交通大学镜像URL: http://ftp.sjtu.edu.cn/
华为云镜像URL: https://mirrors.huaweicloud.com/
更改之后,执行 yum clean all 清楚缓存,然后尝试使用 yum update 或 yum install 命令来测试新的镜像源是否工作正常
安装Python3.10
步骤 1:安装依赖项
Python 3.10 需要一些编译依赖项,包括 OpenSSL 和其他库。首先安装这些依赖项:
sudo yum update -y
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
sudo yum install -y wget
步骤 2:安装或升级 OpenSSL
Python 3.10 需要 OpenSSL 1.1.1 或更高版本。默认的 CentOS 7 的 OpenSSL 版本可能较低,需要手动安装。
安装依赖:
sudo yum install -y perl perl-CPAN
cpan IPC::Cmd
下载并安装 OpenSSL:
wget https://www.openssl.org/source/openssl-3.0.16.tar.gz
tar -zxvf openssl-3.0.16.tar.gz
cd openssl-3.0.16
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make -j $(nproc)
sudo make install
配置环境变量:
echo "export PATH=/usr/local/ssl/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
验证 OpenSSL 版本:
openssl version
这里有个坑,记录一下:
上述步骤安装之后,openssl version查看版本会报错,openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
该错误是libssl.so.3没有挂上软连接
具体操作——
1、全局寻找该文件
sudo find / -name libssl.so*
2、假如说,文件的目录在 /usr/user/libssl.so.3,这个看你的openssl的解压缩目录,那么命令如下
sudo ln -s /usr/user/libssl.so.3 /usr/lib64/libssl.so.3
sudo ln -s /usr/user/libcrypto.so.3 /usr/lib64/libcrypto.so.3
再执行openssl version即可
步骤 3:下载并编译 Python 3.10
下载 Python 3.10 源码:
wget https://www.python.org/ftp/python/3.10.10/Python-3.10.10.tgz
tar -zxvf Python-3.10.10.tgz
cd Python-3.10.10
配置 Python:
./configure --enable-optimizations --with-openssl=/usr/local/ssl
编译并安装:
make -j $(nproc)
sudo make altinstall
步骤 4:验证安装
python3.10 --version
pip3.10 --version
如果显示正确的版本号,则安装成功。
步骤 5:(可选)设置 Python 3.10 为默认版本
如果不希望影响系统默认的 Python 版本,可以创建软链接:
sudo ln -s /usr/local/bin/python3.10 /usr/bin/python3
sudo ln -s /usr/local/bin/pip3.10 /usr/bin/pip3