SLES 12.5ソースからPython 3.9をインストールする

SLES 12.5ソースからPython 3.9をインストールする

私は前に試しました

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? (私はそうは思わない)

答え1

システムにインストールしたバージョンは、openssl-develPython 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など)の最新パッケージは提供されていません。

答え2

ただいくつかの詳細を記録するためのものです(新しいスナップショットでプロセスを繰り返す必要がある場合)。

python3.9を設定しようとすると

./configure --prefix=$PY_HOME --with-openssl=/path_toopenssl/openssl-1.1.1k/apps

私のパスにすでに別の古いopensslがあったので、これはあり得なかったので、最終的に正しいパスの優先順位を決めることになりました。

export PATH=/path_toopenssl/openssl-1.1.1k/apps:$PATH

それからlibffiに多くの問題があったので、後で注目する価値があると思います。

git clone https://github.com/libffi/libffi.git

いつものように

./autogen.sh
.configure
zypper in makeinfo
make
make install

私にとって最もトリッキーな部分は

export LD_LIBRARY_PATH=/usr/local/lib64
export LD_RUN_PATH=/usr/local/lib64
./configure --prefix=$PY_HOME PK_CONFIG_PATH=/usr/local/lib/pkgconfig --with-system-ffi=/usr/local/lib64 LDFLAGS=-L/usr/local/lib64
make
make install

この時点でpip3.9失敗する可能性がありNo module named '_posixsubprocess'、インストールによって解決できます。

zypper in python3-curses
zypper in python-curses
zypper in ncurses
zypper in ncurses-devel

上記はすべてではありません。pip39 install readline競合が発生して最終的に設定したためです。pip3.9 install gnureadline

今動作しているようです:-)

関連情報