安装了Python3.7之后,遇到的一个很麻烦的坑就是与系统自带的ssl版本不兼容, Python3.7需要的openssl的版本为1.0.2
或者1.1.x,这个requirements在config Python3.7的时候使用“
–with-ssl”选项会报出。
-
Could not build the ssl module!
-
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
Linux系统默认的openssl版本通常是:OpenSSL 1.0.1,可以使用命令查询系统的openssl版本:
openssl version
当前版本低于Python3.7的需求,会导致一些运行错误,比如pip3 install命令的失败,故需要进行openssl版本升级。
(1)下载较高版本的openssl
https://www.openssl.org/source/openssl-1.1.1g.tar.gz (2)解压安装包
tar -xvzf openssl-1.1.1g.tar.gz
(3)编译安装
-
cd openssl-1.1.1g
-
./config –prefix=/usr/local/openssl no-zlib # 新版openssl将安装在/usr/local/openssl目录下
-
make
-
make install
这样的话,新版本的openssl已经安装完毕,但是需要进行一些环境配置才能够继续使用。
来到/usr/bin目录下,可以发现已经有一个openssl可执行文件,这个就是系统自带的低版本,这里我们对它进行一个备份。
(4)备份原openssl配置
备份是个好的习惯,至少在安装新版本出错的时候可以回滚旧版本继续使用。
-
mv /usr/bin/openssl /usr/bin/openssl_bak # backup
-
mv /usr/include/openssl/ /usr/include/openssl_bak
(5)备份好之后就可以为新版openssl配置软连接了
-
# 将安装好的openssl的openssl命令软连到/usr/bin/openssl
-
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
-
# 软链到升级后的libssl.so
-
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
-
# 将安装好的openssl命令软连到/usr/bin/openssl
-
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
(6)最后再修改下系统配置即可
-
# 写入openssl库文件的搜索路径
-
echo “/usr/local/openssl/lib” >> /etc/ld.so.conf # 需要root权限
-
# 使修改后的/etc/ld.so.conf生效
-
ldconfig -v
(7)验证安装结果
第二步:安装 LibreSSL
从 LibreSSL 官网 http://www.libressl.org/ 下载源代码。此处使用“libressl-2.8.2.tar.gz”。
以此执行以下命令安装:
#wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.2.tar.gz
#tar xzvf libressl-2.8.2.tar.gz
#cd libressl-2.8.2
#./config
#make
#make install
此时再验证 OpenSSL 版本,如下:
#openssl version
LibreSSL 2.8.2