私は前に試しました
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-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など)の最新パッケージは提供されていません。
答え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
今動作しているようです:-)