2016-08-01 23 views
3

Ich versuche derzeit, Python 2.7.12 mit Openssl 1.0.2h auf einem Centos 5-Host zu kompilieren.Kompilieren von Python 2.7.12 mit nicht-System Openssl auf Centos 5

Der Grund dafür ist, dass ich brauche paramiko 2 auf diesem Host laufen, aber dass das System nicht OpenSSL-Version unterstützt versehen, die 0.9.8e-fips-rhel5 1. Juli 2008

Ich habe ist habe hier einige tolle Hinweise und Tipps gefunden, aber es scheint einfach nicht zu funktionieren. Ich poste dies jetzt in der Hoffnung, dass jemand herausfinden wird, was ich falsch gemacht habe/vermisse.

Für den OpenSSL-Setup ich getan habe folgende:

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 

Dann, da ich nicht will, das System installiert Python mit 2.7.12 ersetzen Ich habe getan, die folgenden:

Zuerst habe ich/usr/local/lib zu /etc/ld.so.conf hinzugefügt und ldconfig ausgeführt.

Danach habe ich ausgeführt:

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 

Dies ist, wenn ich dachte, ich würde es gegen die neue Version von OpenSSL zusammengestellt haben, aber nicht, wie man es von dem Ausgang hier sehen können:

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

Und ich bin sicher, dass ich die neu kompilierte Version renne, dass, da hier anklingt:

[[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 ha Ich bin sogar so weit gegangen, openssl-devel mit Yum zu entfernen, aber es scheint sich immer noch nicht um 1.0.2h zu kümmern.

Dies macht mich im Moment ein bisschen verrückt, also wird jede Eingabe/Feedback/Hilfe sehr geschätzt.

+0

Ich denke, dass Sie die neueste Version von 0.98 nicht 1.x benötigen. –

+0

Ich bin mir nicht wirklich sicher, dass ich dir hier folge. Die Frage war, wie man Python 2.7.12 mit einem 'Nicht-System-Standard' OpenSSL-Build kompiliert, der in ein 'Nicht-Standard'-Verzeichnis kompiliert wurde. Meinst du, dass es nicht mit einem 1.x kompiliert wird, sondern mit einer Version 0.98? Oder sprichst du darüber, was Paramiko 2 deiner Meinung nach braucht? –

+0

Als ich es vor kurzem auf Centos 7 gebaut habe, bin ich mir ziemlich sicher, dass es 0.98x –

Antwort

4

Ich glaube, ich habe versucht, zu niedliche Lösungen zu kopieren und zu mischen - aufgeräumt und vereinfacht ein bisschen und hat es am Ende zum Funktionieren gebracht.

Dies ist, was ich diesmal tat:

Herunterladen und Installieren von 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 

Umgebungsvariablen einrichten

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

Herunterladen und Installieren von 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 
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 

Und jetzt funktioniert es wie erwartet, die neuere OpenSSL-Version angezeigt.

[[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 

Allerdings funktionierte es immer noch nicht wie erwartet. :(Ausführen des Programms Ich habe den folgenden Fehler von 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. 

Die Lösung, die ich gefunden war, die Cryptography Krimskrams zu deinstallieren und neu installieren, indem Sie.

pip2.7 uninstall cryptography 
pip2.7 install cryptography 

Nach all dem - es funktioniert jetzt.

+0

__wesome__, Arbeit wie Charme – luoluo