LoginSignup
4
1

More than 1 year has passed since last update.

古いUbuntuにpyenvで新しいPythonを入れる

Last updated at Posted at 2021-02-09

やんごとなき理由により

環境

  • 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
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1