2016-08-01 77 views
3

我目前正試圖在Centos 5主機上使用Openssl 1.0.2h編譯Python 2.7.12。在Centos 5上編譯Python 2.7.12與非系統Openssl

這樣做的原因是,我需要的paramiko 2到該主機上運行,​​但不支持提供的OpenSSL版本的系統,這是0.9.8e - FIPS的RHEL5 7月01日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 

然後,因爲我不想和2.7.12我做了更換安裝Python的系統如下:

首先,我將/ 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. 

我公頃甚至去除了Yum的openssl-devel,但它似乎仍然不關心/編譯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