나는 전에 시도했다
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
이제 작동하는 것 같습니다 :-)