# Python 3.10 安装

# 1. 更新openssl

# 1.检查 openssl 版本

[root@mmrpatroni2 ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

# 2. 安装下载新版本

# 下载 openssl
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz --no-check-certificate
# 解压
tar -zxvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g/
# 编译安装
./config --prefix=/usr/local/openssl
make
make install

# 3. 备份和替换

# 备份当前机器的版本
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
# 链接新版本
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig 

# 4. 查看是否更新成功

[root@mmrpatroni1 ~]# openssl version
OpenSSL 1.1.1g  21 Apr 2020

# 2. 安装 python 3.10

# 1. 下载python

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

# 2. 安装

  • 解压
# 解压
tar	-zxvf Python-3.10.11.tgz
  • 有两种方式来指定 openssl 的安装路径:

    注意:使用 --enable-optimizations 参数可能会出现各种问题,不建议使用这个参数。

    1. 修改 python 3.10路径下的Module/Setup 文件:

      1. 编辑 python 3.10解压路径下的 Module/Setup 文件:

      2. 修改如下行的内容(取消注释掉这五行):

        cd /opt/soft/python-3.10/
        vi Module/Setup
        # Socket module helper for socket(2)
        _socket socketmodule.c												# 大约在206行,
        
        # Socket module helper for SSL support; you must comment out the other
        # socket line above, and edit the OPENSSL variable:
        OPENSSL=/usr/local/openssl										# 修改升级后的位置
        _ssl _ssl.c \																	# 取消注释
            -I$(OPENSSL)/include -L$(OPENSSL)/lib \  	# 查看openssl安装路径下lib,如果为lib64则修改为lib64
            -lssl -lcrypto														# 取消注释
        #_hashlib _hashopenssl.c \
        #     -I$(OPENSSL)/include -L$(OPENSSL)/lib \
        #     -lcrypto
        
      3. 正常编译安装:

        ./configure --prefix=/usr/local/python/3.10/ --enable-shared
        
    2. 使用 --with-openssl--with-openssl-rpath=auto 来指定 openssl 的路径,方法如下:

      ./configure --prefix=/usr/local/python/3.10/ --with-openssl=/usr/local/openssl/ --with-openssl-rpath=auto --enable-shared
      
  • 编译安装:

    make -j4 && make install -j4
    
  • 添加软连接:

    ln -s /usr/local/python/3.10/bin/python3. /usr/bin/python3
    ln -s /usr/local/python3/3.10/bin/pip3 /usr/bin/pip3
    echo "/usr/local/python3/3.10/lib" >/etc/ld.so.conf.d/python3.conf
    ldconfig
    
  • 测试

    [root@mmrpatroni2 python-3.10]# python3 -V
    Python 3.10.11
    
    # 测试 openssl
    [root@mmrpatroni2 python-3.10]# python3
    Python 3.10.11 (main, Apr 18 2023, 09:44:09) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import ssl
    >>> import _ssl
    >>>