やんごとなき理由により
環境
- Ubuntu 14.04
やりたいこと
- pyenv で Python 3.9.0を入れる
普通にやると以下のようなエラーが出てしまう
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
やること
新しいopensslを導入
14.04のopensslは古いので、Python 3.7以降が必要とするopenssl 1.0.2以降をビルドしてインストールする。
cd /tmp
mkdir openssl-build && cd $_
wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz
tar xvfz openssl-1.1.1i.tar.gz
cd openssl-1.1.1i
./config --prefix=/usr/local/openssl/1_1_1i --openssldir=/usr/local/openssl shared
make
make install
opensslのpathを指定して、pyenv installを実行
LD_LIBRARY_PATH=/usr/local/openssl/1_1_1i/lib CONFIGURE_OPTS="--with-openssl=/usr/local/openssl/1_1_1i" pyenv install -v 3.9.0
これでOK
その後起こった問題
SSLのエラー
今回 install したOpenSSLを参照しているPythonで以下のようなエラーが発生した
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1122)>
原因としては 今回ビルドした /usr/local/openssl/certs
配下が空っぽ(証明書がない)なので、とりあえず既存の証明書のディレクトリを指定して回避。
sudo rm -r /usr/local/openssl/certs
sudo ln -s /etc/ssl/certs /usr/local/openssl/certs