суббота, 4 июля 2020 г.

Установка новой версии Python3 с SSL на старый Linux CentOS6 или CentOS7

Установка новой версии Python3 с SSL на старый Linux CentOS6 или CentOS7

Установим новую версию Python3 так, что бы она не мешала существующей версии Python2. Устанавливать Python3 будем с поддержкой SSL, так как без SSL установка дополнительных модулей с помощью pip может быть проблемой.
ПРИМЕЧАНИЕ. Пример ошибки, которая будет возникать при использовании альтернативной версии python3 в ОС без SSL:
ERROR: Could not find a version that satisfies the requirement requests (from versions: none)
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not

 
Устанавливаем утилиты wget и nano, если они еще не стоят в системе:
# yum install wget nano
Устанавливаем пакеты, необходимые для сборки Python3
# yum install gcc openssl-devel bzip2-devel sqlite-devel
Переходим в папку, куда будем скачивать исходные коды:
# cd /usr/src

Для сборки python3.8 с поддержкой SSL нужен собранный из исходников openssl. Для openssl нужен perl5.
Устанавливаем perl5
# wget http://www.cpan.org/src/perl-5.10.1.tar.gz
# tar -xf perl-5.10.1.tar.gz
# cd perl-5.10.1
# sh Configure -de -Dusethreads
# make
# make install
# cd ..


Устанавливаем openssl свежей версии в папку /usr/local/openssl
# wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
# tar xzf openssl-1.1.1g.tar.gz
# cd openssl-1.1.1g/
# ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
# make
# make install
# cd ..


Делаем символьную ссылку на установленные библиотеки в основной каталог библиотек операционной системы:
# ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
# ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

ПРИМЕЧАНИЕ: Если не прописать символьные линки, то в процессе установки Python будут выходить ошибки:
error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory


Скачиваем дистрибутив Python
# wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
# tar xzf Python-3.8.3.tgz
# cd Python-3.8.3

Для сборки Python c поддержкой SSK, необходимо указать сборщику, где лежит недавно установленный openssl/. Это делается в файле /usr/src/Python-3.8.3/Modules/Setup
# nano Modules/Setup
Здесь нужно найти блок:
#SSL=/usr/local/ssl
#_ssl _ssl.c \
#       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#       -L$(SSL)/lib -lssl –lcrypto

И заменить путь к SSL:
SSL=/usr/local/openssl
_ssl _ssl.c \
      -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
      -L$(SSL)/lib -lssl -lcrypto

Проводим установку Python с применением altinstall
Опция altinstall используется для того, что бы не заменить текущую версию python
# ./configure --enable-optimizations
# make altinstall


Проверка версий Python:
# python3.8 -V
Python 3.8.3

А текущая версия осталась прежней:
# python -V
Python 2.6.6


Для использования pip с предустановленным python 2.6, устанавливаем его так:
# yum install epel-release
# yum install python-pip

Установка пакетов теперь возможна через pip
# pip install mysql-connector
# pip install requests

Установка пакетов для python3 выполняется через pip3
# pip3.8 install requests



Комментариев нет:

Отправить комментарий