Linux에서 openssl 1.1.1t 소스코드 빌드해서 설치 하고 python 3.8.14 빌드해서 설치하기
Linux 서버에서 기본 설치 된 Python 버전이 낮은 경우 높은 버전의 Python을 설치해서 사용하는 경우가 있습니다.
apt나 yum 같은 패키지 관리자로 업그레이드가 가능한 경우도 있겠지만 그렇지 않은 경우 소스코드를 다운로드하여서 빌드해서 설치해야 합니다.
Python 소스 코드로 빌드해서 설치하기 기본
다음은 Python 3.8.14를 /program/python/Python-3.8.14 경로에 설치하는 방법입니다.
wget https://www.python.org/ftp/python/3.8.14/Python-3.8.14.tgz
tar xvfz Python-3.8.14.tgz
cd Python-3.8.14
./configure --prefix=/program/python/Python-3.8.14
make
make install # root 권한이 필요한 경로로 설치 하는 경우 sudo make install
그런데 Python을 직접 빌드해서 설치하는 경우 openssl 관련된 문제로 고생하는 경우가 더러 있습니다. python을 설치하긴 했는데 openssl 관련 문제가 발생하면 pip로 모듈 설치부터 ssl과 관련된 기능들이 정상적으로 동작하지 않기 때문입니다.
Python 빌드할 때 openssl 경로 설정
아래와 같이 configure 단계에서 --with-openssl 경로로 openssl 경로를 지정해 줄 수 있는데요.
./configure --prefix=/program/python/Python-3.8.14 --with-openssl=/usr/bin/openssl
서버에 설치된 openssl 버전과 잘 맞는 경우라면 괜찮지만 서버의 openssl 이 1.0.x 같이 구 버전을 사용하고 python은 1.1.x 이상을 요구해서 문제가 되는 경우가 더러 발생합니다.
직접 설치한 openssl을 사용하는 경우
이런 경우 아래와 같이 openssl을 설치해 줄 수 있습니다.
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar xvfz openssl-1.1.1t.tar.gz
cd openssl-1.1.1t
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
sudo make install
그리고 python을 설치할 때 configure에서 --with-openssl 경로를 다음과 같이 바꿔주면 됩니다.
./configure --prefix=/program/python/Python-3.8.14 --with-openssl=/usr/local/ssl
빌듯이 openssl 관련 파일들의 경로를 못 찾는 경우 다음과 같은 설정이 필요할 수 있습니다.
export LD_LIBRARY_PATH=/usr/local/ssl/lib
export LDFLAGS="-L/usr/local/ssl/lib"
export CPPFLAGS="-I/usr/local/ssl/include"
openssl을 다른 경로에 설치해 줘야 되는 경우
그런데 /usr/local/ssl 경로에 설치하면서 기본 openssl과 문제가 발생하는 경우가 발생한다면 openssl을 다른 경로에 설치해 줘야 되는 경우가 있습니다.
openssl config 단계에서 openssl의 설치 경로를 바꾸는 방법입니다.
./config --prefix=/program/openssl/openssl-1.1.1t --openssldir=/program/openssl/openssl-1.1.1t shared zlib
python 빌드하기 전 openssl 경로 관련 환경 변수를 설정해 줍니다.
export LD_LIBRARY_PATH=/program/openssl/openssl-1.1.1t/lib
export LDFLAGS="-L/program/openssl/openssl-1.1.1t/lib"
export CPPFLAGS="-I/program/openssl/openssl-1.1.1t/include"
그리고 python 빌드할 때 configure 설정을 다음과 같이 바꿔줍니다.
./configure --prefix=/program/python/Python-3.8.14 --with-openssl=/program/openssl/openssl-1.1.1t
openssl 경로를 바꿨을 때 openssl 나 라이브러리를 찾지 못하는 경우
"~/.bashrc" 등의 설정에 다음과 같은 설정을 추가해 주면 됩니다.
export PATH=/hanmail/program/openssl/openssl-1.1.1t/bin:$PATH
export LD_LIBRARY_PATH=/hanmail/program/openssl/openssl-1.1.1t/lib
virtualenv 같은 것을 사용하는 경우 venv/bin/activate 파일을 수정해서 추가해서 사용할 수도 있습니다.
zeppelin을 사용하는 경우 conf/zeppelin-env.sh 파일에 추가 후 zeppelin을 재시작해주면 됩니다.