Centos7.5编译安装python3.7后解决SSL不可用问题

最近学习docker,采用了centos7.5系统,遇到了很多坑。其中之一就是在centos7.5系统中以yum安装Python,其安装路径在/usr/lib和/usr/bin下。安装在这下面有个很大问题就是没法安装setuptools和pip,而对于Python而言pip的重要性就如同yum之于centos。因此,这里采用源码编译安装的方式安装python3.7。

  1. 安装前的准备(各种依赖及工具安装)

    yum -y install gcc make

    yum -y install zlib zlib-devel 

    yum -y install bzip2 bzip2-devel 
    yum -y install ncurses ncurses-devel 
    yum -y install readline readline-devel 
    yum -y install openssl openssl-devel 
    yum -y install openssl-static 
    yum -y install xz lzma xz-devel 
    yum -y install sqlite sqlite-devel 
    yum -y install gdbm gdbm-devel 
    yum -y install tk tk-devel

  2. 以libressl代替openssl-devel

    对于 Python3.7系统,openssl版本必须高于1.0.2或者libressl必须高于2.64版本。这里以libressl代替系统的openssl,libressl获取地址:https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/  

    这里以libressl-2.8.0为例,下载后解压并进入目录,然后分别运行以下命令:

    ./config --prefix=/usr/local/ssl

    make & make install

    mv /usr/bin/openssl /usr/bin/openssl.bak 
    mv /usr/include/openssl /usr/include/openssl.bak 
    ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 
    ln -s /usr/local/ssl/include/openssl /usr/include/openssl

  3. 扩展centos默认访问库,使可访问libressl库文件

    cd /etc/ld.so.conf.d/

    新建文件 
    vim libressl-2.8.0.conf 
    将以下行加入文件,并保存 
    /usr/local/ssl/lib

    运行命令使生效

    ldconfig

  4. 编辑/etc/profile文件,新增如下环境变量

    export LDFLAGS="-L/usr/local/ssl/lib"
    export CPPFLAGS="-I/usr/local/ssl/include"     //引号内第一个字母是大写i 
    export PKG_CONFIG_PATH="/usr/local/ssl/lib/pkgconfig"

  5. 编译安装python3.7

    ./configure --prefix=/usr/local --enable-shared CFLAGS=-fPIC    //配置安装目录,使其安装在/usr/local目录下,这样后面才能成功安装setuptools和pip

    make & make install

    ln -s /usr/local/bin/python3.7 /usr/local/bin/python    //创建快捷方式,是输入python时默认打开python3.7解释器,而不是系统默认的版本

  6. 扩展centos默认访问库,使可访问python3.7的库文件

    cd /etc/ld.so.conf.d/

    新建文件 
    vim python3.conf 
    将以下行加入文件,并保存 
    /usr/local/lib 

      运行命令使生效

      ldconfig


猜你喜欢

转载自blog.51cto.com/taoismli/2173359