2016-08-01 3 views
3

Я в настоящее время пытаюсь получить Python 2.7.12 для компиляции с Openssl 1.0.2h на хосте Centos 5.Компиляция Python 2.7.12 с несистемной Openssl на Centos 5

Причина этого заключается в том, что мне нужно Paramiko 2 для запуска на этом хосте, но это не поддерживает систему при условии OpenSSL версии, которая 0.9.8e-ФИПС-RHEL5 1 июля 2008

Я нашел здесь некоторые замечательные советы и подсказки, но он просто не работает. Теперь я публикую это в надежде, что кто-то обнаружит, что я сделал неправильно/отсутствует.

Для установки OpenSSL я сделал следующее:

OPENSSL_ROOT="$HOME/.build/openssl-1.0.1e" 
cd /tmp 
curl http://www.openssl.org/source/openssl-1.0.2h.tar.gz | tar zxvf - 
cd openssl-1.0.2.h 
mkdir -p "$OPENSSL_ROOT" 
./config no-hw --prefix="$OPENSSL_ROOT" --openssldir=... 
make install 

Тогда, так как я не хочу, чтобы заменить систему, установленную на Python с 2.7.12 я сделал следующее:

Сначала я добавил/usr/local/lib в /etc/ld.so.conf и запустил ldconfig.

После этого я бежать:

cd /tmp 
wget http://python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz 
tar xf Python-2.7.12.tar.xz 
cd Python-2.7.12 
./configure CPPFLAGS="-I$OPENSSL_ROOT/include" LDFLAGS="-L$OPENSSL_ROOT/lib" --prefix=/usr/local --enable-unicode=ucs4 --enable-shared 
make && make altinstall 

Это когда я думал, что бы он скомпилирован с новой версией OpenSSL, но нет, как вы можете видеть на выходе здесь:

[[email protected] openssl-1.0.2h]# python2.7 -c "import ssl; print ssl.OPENSSL_VERSION" 
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008 

И я уверен, что я бегу вновь скомпилированную версию, так что вторит здесь:

[[email protected] openssl-1.0.2h]# python2.7 
Python 2.7.12 (default, Aug 1 2016, 11:46:42) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 

I га даже дошел до удаления opensl-devel с помощью Yum, но он по-прежнему не заботится/не компилируется против 1.0.2h.

Это водит меня немного сумасшедшим в данный момент, поэтому любой вход/обратная связь/помощь приветствуются.

+0

Я считаю, что вам нужна последняя версия 0.98, а не 1.x. –

+0

Я не уверен, что буду следовать за вами здесь. Вопрос заключался в том, как скомпилировать Python 2.7.12 с «нестандартной» сборкой OpenSSL, которая была скомпилирована в каталог «не по умолчанию». Вы подразумеваете, что он не будет компилироваться с 1.x, но с версией 0.98? Или вы говорите о том, что думаете, что Paramiko 2 нуждается? –

+0

Когда я недавно построил его на Centos 7, я уверен, что он нужен 0.98x –

ответ

4

Я думаю, что я попытался скопировать слишком симпатичные решения и смешать и совместить - немного убрал и упростил и заставил его работать в конце.

Это то, что я сделал на этот раз:

Скачать и установить OpenSSL

cd /tmp 
curl http://www.openssl.org/source/openssl-1.0.2h.tar.gz | tar zxvf - 
cd openssl-1.0.2.h 
./config shared --prefix=/usr/local/ 
make && make install 

Настройка некоторых переменных окружения

export LDFLAGS="-L/usr/local/lib/" 
export LD_LIBRARY_PATH="/usr/local/lib/" 
export CPPFLAGS="-I/usr/local/include -I/usr/local/include/openssl" 

Скачать и установить Python 2.7. 12

wget http://python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz 
tar xf Python-2.7.12.tar.xz 
cd Python-2.7.12 
./configure --prefix=/usr/local/ --enable-unicode=ucs4 --enable-shared 
make && make altinstall 

И теперь он работает должным образом, отображая новую версию OpenSSL.

[[email protected] Python-2.7.12]# python2.7 
Python 2.7.12 (default, Aug 1 2016, 14:48:09) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import ssl 
>>> print ssl.OPENSSL_VERSION 
OpenSSL 1.0.2h 3 May 2016 

Однако все еще не работает должным образом. :(Запуск программы я получил следующее сообщение об ошибке от Paramiko:

RuntimeError: You are linking against OpenSSL 0.9.8, which is no longer support by the OpenSSL project. You need to upgrade to a newer version of OpenSSL. 

Решение, которое я нашел было удалить и переустановить криптография биты и куски, запустив.

pip2.7 uninstall cryptography 
pip2.7 install cryptography 

После всего этого - теперь это работает.

+0

__awesome__, работать как шарм – luoluo

Смежные вопросы