Python3

SLES 12.5 從原始碼安裝 Python 3.9

  • July 12, 2021

我試過了

wget https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tgz
tar xvzf Python-3.9.4.tgz

移到源目錄

./configure
make

然後,經過多行,我收到一個錯誤

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

我不明白該怎麼做,因為我檢查了

openssl version
OpenSSL 1.0.2p-fips  14 Aug 2018

openssl-1_1 version
OpenSSL 1.1.1d  10 Sep 2019

而且,從根:

Reading installed packages...

S  | Name                       | Summary                           | Type
---+----------------------------+-----------------------------------+-----------
i+ | libgnutls-openssl27        | The GNU Transport Layer Securit-> | package
i  | libopenssl-1_0_0-devel     | Development files for OpenSSL     | package
i+ | libopenssl-devel           | Include Files and Libraries man-> | package
i  | libopenssl1_0_0            | Secure Sockets and Transport La-> | package
i  | libopenssl1_0_0-32bit      | Secure Sockets and Transport La-> | package
i  | libopenssl1_1              | Secure Sockets and Transport La-> | package
i  | libxmlsec1-openssl1        | OpenSSL crypto plugin for XML S-> | package
i  | openssl                    | Secure Sockets and Transport La-> | package
i  | openssl-1_0_0              | Secure Sockets and Transport La-> | package
i+ | openssl-1_1                | Secure Sockets and Transport La-> | package
i+ | python3-pyOpenSSL          | Python wrapper module around th-> | package

有任何想法嗎?不能在 SLES 12.5 上使用 python 3.9 嗎?我可以擁有的最高版本是多少?(當然我已經是 zypper 的原生 3.6)

也許我應該配置 openssl 的根目錄,但我不確定它到底在哪裡

which openssl-1_1
/usr/bin/openssl-1_1

/usr/bin嗎?(我不這麼認為)

您在系統上安裝的版本openssl-devel不夠新,無法建構 Python 3.9。您將在包含您需要的開發庫的許多包中遇到這個問題,因為您正在執行只有 1.0.0 版本的 SLES 12,而 Python 3.9 至少需要 1.0.2,最好是 1.1。

您唯一能做的就是從原始碼建構 Openssl 1.0.2 或 1.1 並將其添加到您的環境中。您需要對系統上不夠新的任何其他所需的軟體包執行相同的操作。SLES 12 仍受支持,但它不會為 Python 3.9 等更新的軟體提供最新的軟體包。

引用自:https://unix.stackexchange.com/questions/647476