컴파일 하는 이유: miniconda로 3.13 버전이 없어서 / 회사 라이센스 문제로 / pyenv도 안 되어서
우분투가 너무 낡은 버전이면 pyenv도 안 먹힌다.
dependency를 잘 갖추고 컴파일 해야 libssl이 없어서 httpx등 https를 쓰는 모듈들이 작동을 잘 안 한다든지 하는 문제가 없다. 오래된 우분투를 운영하는 것 자체가 고통이다.
https://devguide.python.org/getting-started/setup-building/index.html#deps-on-linux
Dependency는 dev guide를 읽으면 나온다. 다행히도 노가다하면서 하나씩 알아낼 필요가 없다.
이후는 여타 컴파일로 설치하는 프로그램들과 동일하... 지 않다.
우분투가 오래된 버전이면 openssl 1.1.1 미만일 것임. 그러면
Could not build the ssl module!
Could not build the ssl module! Python requires a OpenSSL 1.1.1 or newer
이렇게 나오면서 빌드가 중단됨.
openssl 소스코드를 받고 configure, make, make install ㄱㄱ (여기선 1.1.1w, openssl 3.x.x로 시도해봤는데 API가 맞지 않아서 잘 안 된다.)
~/usr/src/openssl-1.1.1w $
./config --prefix=/opt/openssl-1.1.1w
make
sudo make install
이렇게 설치한다.
[ERROR] _hashlib failed to import: libcrypto.so.1.1: cannot open shared object file: No such file or directory
[ERROR] _ssl failed to import: libssl.so.1.1: cannot open shared object file: No such file or directory
Following modules built successfully but were removed because they could not be imported:
_hashlib _ssl
이런 메시지를 안 보려면...
./configure \
--prefix=/opt/python-3.13.1 \
--enable-optimizations \
--enable-shared \
--with-openssl=/opt/openssl-1.1.1w \
--with-openssl-rpath=/opt/openssl-1.1.1w/lib
make
sudo make install
configure만 적절히 되면 어렵지않게 make 되고 install될 것이다.