игнорирование провайдера surepip pip требует ошибки ssl / tls в Ubuntu 18.04 - PullRequest
0 голосов
/ 02 мая 2018

Получение игнорирование провала гарантированного пипа Для pip требуется ssl / tls * Ошибка 1002 * при попытке установить python и pip в Ubuntu 18.04

Попытка запустить sudo make install получает вышеуказанную ошибку.

# Download Python
curl -O https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
tar -xzvvf Python-3.4.2.tgz
cd Python-3.4.2
export CFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib -I/usr/local/opt/zlib/include -L/usr/local/opt/zlib/lib"

# Required Dependencies
sudo apt-get install libssl-dev openssl
sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libpq-dev zlib1g-dev

# Prepare to install Python
./configure
make -j4
sudo make install

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Это связано с Debian 9 использованием OpenSSL 1.1.0. Однако поддержка OpenSSL 1.1.0 в модуле SSL была добавлена ​​только в Python 2.7.13, 3.5.3 и 3.6+ Таким образом, это делает Python в этих версиях неправильно связанным с библиотекой ssl. Вопросы https://github.com/pyenv/pyenv/issues/945 Поэтому вы должны вручную добавить эти библиотеки при компиляции.

Мое предложение

Поскольку ваша система уже скомпилирована с python по умолчанию, непреднамеренно скомпилированная другая версия python в исполняемый файл global может вызвать много скрытых проблем, особенно некоторые команды, используемые в python по умолчанию для системы.

Так почему бы вам не использовать pyenv, чтобы контролировать эти версии питонов? pyenv подобен программам контроля версий Python, он использует shims, через процесс, называемый rehashing, pyenv поддерживает shims в этом каталоге, чтобы соответствовать каждой команде Python для каждой установленной версии python, pip, и так далее. Для получения дополнительной документации, пожалуйста, прочитайте: https://github.com/pyenv/pyenv. Для установки pyenv, пожалуйста, следуйте предоставленной ссылке.

Решение

После многих часов борьбы я, наконец, нашел решение, позволяющее идеально решить эти версии проблем с конфликтами питонов, скопировать и вставить следующий скрипт в новый файл и сделать его исполняемым, после чего вы сможете скомпилировать и установить эти питоны. Хотя если вы хотите установить их другим способом, скажем, без использования pyenv, измените команды последней второй строки в соответствии с вашими потребностями.

#!/bin/bash -e

# Note: it is a script to solve Ubuntu 18.04 LTS 
#       different version of pythons compiling
#       header confliction problems
#
# The idea is got from @JustAnotherArivist
# From URL: https://github.com/pyenv/pyenv/issues/945
#
# The script used in here is with slightly modifications
# to fit many different SSL header versions


# First under your home directory make OpenSSL library
# and extract useful package

mkdir ~/libssl1.0-dev
cd ~/libssl1.0-dev
apt-get download libssl1.0-dev
ar x libssl1.0-dev* data.tar.xz
tar -xf data.tar.xz --strip-components=2


# Second, specifically get your current system's SSL headers
# and make symbolic-links

libcrypto=$(ls /usr/lib/x86_64-linux-gnu/ | grep libcrypto.so......)
libssl=$(ls /usr/lib/x86_64-linux-gnu/ | grep libssl.so......)

ln -s /usr/lib/x86_64-linux-gnu/${libcrypto} ~/libssl1.0-dev/lib/x86_64-linux-gnu
ln -s /usr/lib/x86_64-linux-gnu/${libssl} ~/libssl1.0-dev/lib/x86_64-linux-gnu


# Set your CFLAGS LDFLAGS compile options
# And use pyenv install the python version <3.4.5 or <3.5.3

# Note: it is a one line command
# Please change the version of python that you want to compile
CFLAGS="-I${HOME}/libssl1.0-dev/include -I${HOME}/libssl1.0-dev/include/x86_64-linux-gnu" \
LDFLAGS="-L${HOME}/libssl1.0-dev/lib/x86_64-linux-gnu" \
pyenv install 3.4.2


# Remove tempor libssl1.0-dev direcotory
rm -rf ~/libssl1.0-dev
0 голосов
/ 14 июня 2018

Это проблема компиляции Python, которая была исправлена ​​в Python 3.4.5 . Рекомендуется выполнить обновление до 3.4.5 и снова выполнить шаги компиляции.

Для тех, кто приезжает сюда для Python <3.5.3 с той же проблемой, эта же проблема была исправлена ​​в 3.5.3 (см. <a href="https://github.com/pyenv/pyenv/issues/950" rel="noreferrer"> здесь ).

Я не уверен, что затронуты другие версии Python, но в примечаниях к патчу было замечено, что в более поздних версиях также было сделано исправление для Windows и MacOSX. Пожалуйста, проверьте журнал изменений для основной версии Python, которую вы используете, чтобы увидеть, какое исправление применимо к вам. журналы изменений можно найти здесь: ( Python 3.4 , Python 3.5 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...