다음과 같은 디렉토리 구조가 있습니다.
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la
2to3 cpp-5.3.0 gcov-5.3.0 grmid-5.3.0 objcopy-2.25.1 python3.5-config .sources
2to3-3.5 elfedit-2.25.1 gcov-tool-5.3.0 grmiregistry-5.3.0 objdump-2.25.1 python3.5m strings-2.25.1
addr2line-2.25.1 g++-5.3.0 gfortran-5.3.0 gserialver-5.3.0 pydoc python3.5m-config strip-2.25.1
aot-compile-5.3.0 gappletviewer-5.3.0 gij-5.3.0 gtnameserv-5.3.0 pydoc3 python3-config x86_64-unknown-linux-gnu-c++-5.3.0
ar-2.25.1 gc-analyze-5.3.0 gjar-5.3.0 idle pydoc3.5 python-config x86_64-unknown-linux-gnu-g++-5.3.0
.archives gcc-5.3.0 gjarsigner-5.3.0 idle3 python pyvenv x86_64-unknown-linux-gnu-gcc-5.3.0
as-2.25.1 gcc-ar-5.3.0 gjavah-5.3.0 idle3.5 python2 pyvenv-3.5 x86_64-unknown-linux-gnu-gcc-ar-5.3.0
bash gcc-nm-5.3.0 gkeytool-5.3.0 jcf-dump-5.3.0 python2.7 ranlib-2.25.1 x86_64-unknown-linux-gnu-gcc-nm-5.3.0
.binaries gcc-ranlib-5.3.0 gnative2ascii-5.3.0 jv-convert-5.3.0 python2.7-config readelf-2.25.1 x86_64-unknown-linux-gnu-gcc-ranlib-5.3.0
.build gcj-5.3.0 gorbd-5.3.0 ld-2.25.1 python2-config rebuild-gcj-db-5.3.0 x86_64-unknown-linux-gnu-gcj-5.3.0
c++-5.3.0 gcj-dbtool-5.3.0 gprof-2.25.1 ld.bfd-2.25.1 python3 size-2.25.1 x86_64-unknown-linux-gnu-gfortran-5.3.0
c++filt-2.25.1 gcjh-5.3.0 grmic-5.3.0 nm-2.25.1 python3.5 smtpd.py
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la .sources/
bash-4.4-beta binutils-2.25.1 boost_1_60_0 gcc-5.3.0 Python-2.7.11 Python-3.5.1
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la .build/
bash-4.4-beta binutils-2.25.1 boost_1_60_0 gcc-5.3.0 Python-2.7.11 Python-3.5.1
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$ la .binaries/
bash-4.4-beta binutils-2.25.1 boost_1_60_0 gcc-5.3.0 Python-2.7.11 Python-3.5.1
nchambers@nchambers-305E4A-305E5A-305E7A:~/mini-bin$
일반적으로 말하면, 타르 볼이 들어가고 .archives
, 압축이 풀린 소스가 들어가고 .sources
, 빌드가 이루어지고 .build
, 최종 바이너리가 저장됩니다 .binaries
. 그런 다음 바이너리를 $PATH .binaries
에 심볼릭 링크했습니다. ~/mini-bin
나는 이것이 이상한 작업 흐름이라는 것을 알고 있지만 그것은 나에게 효과적입니다. 어쨌든, 소스에서 python-2.7.11(및 3.4.0, 2.7.11부터 시작)을 다시 빌드하고 싶습니다. 내 시스템에서는 잘 빌드되지만 ncurses, readline, SSL 등을 지원하여 빌드하려면 필요합니다. 이러한 라이브러리를 소스에서 컴파일해야 합니까? 그렇다면 도서관은 어디에 두어야 할까요? Python으로 빌드하도록 어떻게 지시합니까? 감사합니다. 좋은 하루 되세요!
답변1
나는 Ubuntu 20.10에서 3.9.1을 빌드하려고 노력해 왔습니다.
여기의 종속성 팁을 따르십시오.
https://devguide.python.org/setup/#install-dependents
특히 저장소에서 3.9.0을 설치하고 소스 저장소를 활성화한 후 다음을 수행했습니다.
sudo apt-get build-dep python3.9
그런 다음 구성 단계에 이것을 사용하십시오.
LDFLAGS="-L/usr/lib/x86_64-linux-gnu" ./configure --enable-optimizations
SSL 오류 없이 Python을 빌드한다는 의미는 고무적입니다.
LDFLAGS 접두사가 없으면 SSL로 인해 빌드가 실패합니다.
하지만,
make test
모듈을 가져왔음에도 불구하고 SSL 테스트에 여전히 실패가 표시됩니다.
답변2
SSL에만 초점을 맞추면 많은 답변이 있습니다.
https://serverfault.com/questions/353128/recompiling-python-with-ssl-support-on-ubuntu
https://mail.python.org/pipermail/python-ideas/2014-May/027866.html
https://stackoverflow.com/questions/5937337/installing-python-with-ssl-support-in-local
https://bugs.python.org/issue21541
아니요, 원래 SSL 소스는 필요하지 않으며 "apt-get install libssl-dev"만 있으면 됩니다.