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

이제 작동하는 것 같습니다 :-)

관련 정보