NiceLeeのBlog 用爱发电 bilibili~

备忘录 记一次CentOS下的Python3安装

2021-03-26
nIceLee

阅读:


./configure ...
make && make install
Oppppppppppppssssssssssssssssssssssssssss
无论它有没有技术含量,好歹花了我一小时以上。

先把坑给写了

  1. yum install报错
     # 备份系统旧配置文件
     mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
     # 下载源配置 CentOS6(其它版本参考上面的链接)
     wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos6_base.repo
     # 把http替换https
     sed -i 's#http#https#g' /etc/yum.repos.d/CentOS-Base.repo
     # 清除缓存
     yum clean all
     yum makecache
    
  2. Python3集成ssl的前提条件是系统有安装openssl, 且对openssl的版本有要求
    • 比如,python版本3.8.3,要求的openssl在1.0.2以上
    • 老旧的CentOS极大可能需要更新openssl,如何检测呢?
     # 查看版本
     $ openssl version
     OpenSSL 1.0.1e-fips 11 Feb 2013
     # 获取安装目录
     $ which openssl
     /usr/bin/openssl
     $ ll /usr/bin/openssl
     ... /usr/bin/openssl -> /usr/lib/openssl/bin/openssl
    
  3. 如果你已经经历了安装失败,再去搜索解决方案,要注意不同的人对应的安装路径不一定相同!!
    • 例如,有的喜欢直接/usr/local/openssl,有的带版本号/usr/local/openssl1.1
      等等,这是你需要去改的
    • 不要大意,以为改了末尾的文件夹名称就搞定了,一定要仔细看全
      有的人喜欢安装在/usr/local,
      有的则喜欢/usr/lib,
      当然也不排除有奇行种…
      一定要检查整个安装路径,别人的configure配置只能用作参考
  4. 一个小技巧
    一般我们是通过ssh去连接服务器操作的,而且编译安装过程挺长。
    我们可以写个脚本然后nohup运行,接着可以干自己的事情了。
    chmod 755 build.sh
    nohup ./build.sh &
    # log会在nohup.out里面,当然也可以自己指定位置。
    

安装依赖

  • 这一步没啥要注意的
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel db4-devel libpcap-devel xz-devel gdbm-devel expat-devel libffi-devel
    

安装openssl

  • 下载安装包并解压
    cd ~
    wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1i.tar.gz
    tar zxvf openssl-1.1.1i.tar.gz
    
  • 安装
    此处安装路径可以自己指定,但请注意后面务必做出相应更改
    cd openssl-1.1.1i
    ./config --prefix=/usr/lib/openssl1.1
    make&&make install
    
  • 建立软链接
    mv /usr/bin/openssl /usr/bin/openssl1.0.1
    mv /usr/lib/openssl /usr/lib/openssl1.0.1
    ln -s /usr/lib/openssl1.1/bin/openssl /usr/bin/openssl
    ln -s /usr/lib/openssl1.1 /usr/lib/openssl
    ln -s /usr/lib/openssl1.1/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
    ln -s /usr/lib/openssl1.1/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
    
  • 查看安装结果
    openssl version
    

安装python3

  • 下载安装包并解压
    cd ~
    wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
    tar -zxvf Python-3.8.1.tgz
    
  • 安装
    • --with-openssl=/usr/lib/openssl
      • 默认位置是/usr/local/ssl,在这里找不到或者ssl版本过低都不会成功。
        所以要指定安装目录,软链接或实际位置均可。
    • --prefix=/usr/lib/python3
      • 指定python3安装位置,方便建立软链接
    • 其它configure配置无所谓,顾名思义即可。
      cd Python-3.8.1
      ./configure --enable-shared --enable-optimizations --enable-loadable-sqlite-extensions --disable-ipv6 --with-openssl=/usr/lib/openssl --prefix=/usr/lib/python3
      make && make install
    
  • 建立软链接
    因为--enable-shared,为了防止如下报错,我们需要为几个共享object建立软链接。
    error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
    

    以下:

    # 下面这个目录是python3解压包的位置
    ln -s ~/Python-3.8.1/libpython3.8.so /usr/lib/libpython3.8.so 
    ln -s ~/Python-3.8.1/libpython3.8.so.1.0 /usr/lib/libpython3.8.so.1.0
    ln -s /usr/lib/python3/bin/python3 /usr/bin/python3
    ln -s /usr/lib/python3/bin/pip3 /usr/bin/pip3
    
  • 查看安装结果
    python3
    >>> import ssl
    

内容
隐藏