最新消息:走过的,离开的,已经错过,新开始2016

Linux升级OpenSSL3安装Python3.12

技术随笔 果果 1759浏览 1评论

写了一个py脚本,实现一个小功能,我这边都还是Python2.7,是时候升级了,今天来尝试一下。
各种折腾,耗时一下午+一上午。

参考了各种文章,也遇到一些坑,这里记录一下,如果有错误,和不对的地方,欢迎留言。

我的系统为anolis-7.9,也是比较老了,内置了Python2.7,OpenSSL1.1.0。

一开始是直接编译安装Python3,但在使用requests库的时候,urllib3提示需要OpenSSL不低于1.1.1,额,以至于入坑,编译OpenSSL。查看

https://github.com/urllib3/urllib3/issues/2168

直接下载最新版包

//查看OpenSSL版本
openssl version
//安装一些依赖
yum -y install zlib1g-dev zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make -y
wget https://www.openssl.org/source/openssl-3.3.0.tar.gz
tar -xvf openssl-3.3.0.tar.gz
cd openssl-3.3.0
//这里编译遇到缺两个依赖,再装一下
yum install perl-IPC-Cmd perl-Data-Dumper -y
./config
make
make install

一路顺利,全部默认安装,这里后面就留了坑。
替换之前的版本,和一些库,这里遇到坑,只替换了libssl.so,没替换libssl.so.3,后面报找不到。

mv /usr/bin/openssl /usr/bin/openssl.old
ln -sv /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
ln -s /usr/local/lib64/libssl.so.3 /usr/lib64/libssl.so
ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so

这里也有教程说直接改,我一开始改了,后面被我删除了,仅供参考。

echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig

查看是否为最新版

openssl version

可以看到已经升级成功。
加入环境变量,这一步没做,后面编译Python一直还是提示OpenSSL过低,
而且这几个路径也烦恼,前面默认参数编译,也没自定义路径,也不知道路径是什么。

vi ~/.bash_profile

最后面加入

export LDFLAGS="-L/usr/local/lib64"
export CFLAGS="-I/usr/local/include"
export LD_LIBRARY_PATH="/usr/local/lib64:$LD_LIBRARY_PATH"

重载环境变量。

source ~/.bash_profile

验证环境变量是否成功

echo $LD_LIBRARY_PATH

下载最新版Python

wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz
tar -xvf Python-3.12.3.tgz
cd Python-3.12.3
mkdir /usr/local/python3

编译参数,这里被坑

./configure --prefix=/usr/local/python3 --enable-optimizations

这里很多教程需要加–with-openssl=/usr/local/bin/openssl ,但是我们前面默认参数编译OpenSSL,一些路径不对找不到,反而是不加成功编译。

checking for include/openssl/ssl.h in /usr/local/bin/openssl... no
checking whether compiling and linking against OpenSSL works... no
checking for --with-openssl-rpath... 
checking whether OpenSSL provides required ssl module APIs... no
checking whether OpenSSL provides required hashlib module APIs... no
checking for --with-ssl-default-suites... python
checking for --with-builtin-hashlib-hashes... md5,sha1,sha2,sha3,blake2
checking for libb2... no

后面编译出来要不然是报错,要不然就是没有SSL模块。这里折腾耽误时间。

make
make install

一路通畅,没有报错了。
完成后自行决定是否替换原来的Python2.7和加入环境变量,这里就不叙述了,但是强烈建议不要替换原来的Python2.7

/usr/local/python3/bin/python3

Python 3.12.3 (main, Apr 24 2024, 13:31:35) [GCC 4.8.5 20150623 (Anolis 4.8.5-44.0.1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl; print(ssl.OPENSSL_VERSION)
OpenSSL 3.3.0 9 Apr 2024

可以看到已经成功安装Python3.12.3并使用OpenSSL3.3.0 。

转载请注明:果果.IT » Linux升级OpenSSL3安装Python3.12

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址