./configure ...
make && make install
Oppppppppppppssssssssssssssssssssssssssss
无论它有没有技术含量,好歹花了我一小时以上。
先把坑给写了
yum install
报错- 换源即可,参考腾讯CentOS源帮助文档
# 备份系统旧配置文件 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
- 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
- 比如,python版本
- 如果你已经经历了安装失败,再去搜索解决方案,要注意不同的人对应的安装路径不一定相同!!
- 例如,有的喜欢直接
/usr/local/openssl
,有的带版本号/usr/local/openssl1.1
…
等等,这是你需要去改的 - 不要大意,以为改了末尾的文件夹名称就搞定了,一定要仔细看全
有的人喜欢安装在/usr/local
,
有的则喜欢/usr/lib
,
当然也不排除有奇行种…
一定要检查整个安装路径,别人的configure配置只能用作参考
- 例如,有的喜欢直接
- 一个小技巧
一般我们是通过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