Установка новейшей версии Python из исходного кода
cd /opt
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
tar xvf Python-3.7.1.tar.xz
mv Python-3.7.1 python3.7
cd python3.7
./configure --prefix=/opt/python3.7 --enable-optimizations --with-zlib-dir=/usr/local/lib
make -j 4 # 4 -cpu kernel count
make install
Чтобы собрать с поддержкой openssl (zun and etc.)
## ставим библиотеки поддержки SSL
sudo apt install build-essential gcc make zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
sudo apt-get install libreadline-gplv2-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
# sudo apt install libncursesw5-dev
Если надо собрать с текущей версией openssl, то cразу можно собирать python (для zun pike)
сборка python из исходного кода (openssl 1.x)
rm /usr/bin/lsb_release
cd /opt/python3.8
./configure --prefix=/usr --with-openssl=/usr
## ключ --enable-optimizations НЕ обязательно - будет очень долго работать!
make -j4
sudo make install
Правим файл /opt/python3.8/Modules/Setup в районе 210-ой строки:
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl
SSL=/usr/local
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
Если не исправить Modules/Setup, то вот такая ошибка:
Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381
сборка openssl из исходного кода
если надо более новую версию openssl
cd /opt
git clone https://github.com/openssl/openssl.git
cd /opt/openssl
export LD_LIBRARY_PATH=/opt/openssl/lib
./Configure
make
make test
make install
сборка python из исходного кода (openssl 3.x)
rm /usr/bin/lsb_release
cd /opt/python3.7
./configure --prefix=/usr --with-openssl=/opt/openssl
## ключ --enable-optimizations НЕ обязательно - будет очень долго работать!
make -j4
sudo make install
поправляем pip, python default
ln -s /usr/bin/pip3.7 /usr/bin/pip
pip install --upgrade pip
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
update-alternatives --config python
python -V
Проверяем, что python собрался с поддержкой openssl
Установка pip для python3.7
It is possible that pip does not get installed by default. One potential fix is: Возможно, pip не установится по умолчанию. Тогда ставим дополнительно: