2016-08-01 6 views
3

현재 CentOS 5 호스트에서 Python 2.7.12를 Openssl 1.0.2h로 컴파일하려고합니다.CentOS 5가 아닌 시스템에서 Openssl을 컴파일하는 Python 2.7.12

그 이유는 내가이 호스트에서 실행 Paramiko이 필요하지만이 OpenSSL이 버전에서 제공하는 시스템을 지원하지 않는다는 것입니다

0.9.8e - FIPS-RHEL5 나는했습니다 2008 년

7월 1일 여기에 좋은 힌트와 팁을 발견했지만 작동하지 않는 것 같습니다. 나는 누군가가 내가 잘못했거나 실종 된 것을 발견 할 것이라는 희망으로 이것을 게시하고있다. 내가 한 일에는 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 

을 그럼 난 다음 내가했던 2.7.12 파이썬 설치 한 시스템을 교체하지 않기 때문에 :

먼저/usr/local/lib를 /etc/ld.so.conf에 추가하고 ldconfig를 실행했습니다.

: 여기 출력에서 ​​볼 수 있듯이, 아니 나는 그것이에는 OpenSSL의 새 버전에 대해 컴파일 한 거라고 생각하면

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 

이 있지만 :

는 그 후 나는 실행했습니다

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

내가 하 Yum으로 openssl-devel을 삭제하는 것까지 갔지만 여전히 1.0.2h에 대해 신경 쓰지는 않습니다.

이 순간 약간의 화를 내며 어떤 의견/피드백/도움을 주시면 감사하겠습니다.

+0

1.x가 아닌 0.98의 최신 버전이 필요합니다. –

+0

나는 여기서 내가 너를 따라오고 있는지 정말로 모르겠다. 문제는 '기본이 아닌'디렉토리로 컴파일 된 '시스템 표준이 아닌'OpenSSL 빌드를 사용하여 Python 2.7.12를 컴파일하는 방법이었습니다. 1.x 버전으로 컴파일되지 않지만 0.98 버전으로 컴파일 될 것이라는 것을 의미합니까? Paramiko 2가 필요하다고 생각하는 것에 대해 이야기하고 있습니까? –

+0

CentOS 7에서 최근에 만들었을 때 나는 그것이 필요하다고 확신했다. 0.98x –

답변

4

나는 너무 귀여운 솔루션을 복사하고 믹스 앤 매치를 시도해 보았습니다. 정리하고 약간을 단순화하여 결국 작동하도록했습니다. 일부 환경 변수

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

다운로드 및 파이썬 2.7 설치를 설정

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 

다운로드 및 설치 : 이것은 내가이 시간에 무슨 짓을

. 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