2017 年もあと少しで終わろうとしている爽秋の季節に CentOS 5 に Python 3 をインストールしないといけない状況になってしまった。
というわけで、本日の「どうしてこうなった」案件。対象のOSは、泣く子も黙るEOSLを迎えた CentOS 5.11 でございます。
事前に必要なパッケージをインストール
EPEL 導入済みの環境を前提として、以下のものは最低でもインストールしてリポジトリの最新のバージョンに上げておく。
$ sudo yum -y install gcc make readline readline-devel zlib zlib-devel bzip2 bzip2-devel sqlite sqlite-devel openssl openssl-devel git
pyenv のインストール
ちなみに git
がインストールされてないと詰む。
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL"
pyenv
コマンドでインストール可能なバージョンが確認できるようになる。
$ pyenv install --list
Available versions:
2.1.3
...
3.5.4
...
Python 3 のインストール
CFLAGS
と LDFLAGS
を明示してインストールしないと、インストール後に pip
などを実行した際に、SSL 周りでエラーが出力される、あるいはそもそもインストールできない、といった事象が発生するので注意されたし。自分の環境だけなのかどうか分からんが、Python 3.6.0 以降のビルドには失敗する。Python 3.5.4 ならインストール可能。理由は知らん。
$ CFLAGS=-I/usr/include/openssl LDFLAGS=-L/usr/lib64 pyenv install -v 3.5.4
このコマンドで利用可能なバージョンが確認できる。
$ pyenv versions
* system
3.5.4 (set by /home/user/.pyenv/version)
3.5.4
を利用する場合はこのコマンドを実行する。
$ pyenv global 3.5.4
すると、3.5.4
にチェックがついた。
$ pyenv versions
system
* 3.5.4 (set by /home/user/.pyenv/version)
パスの通っている python
のバージョンが 3.5.4
になっている。
$ python -V
Python 3.5.4
他にも Python3 をインストールする方法はあるだろうが、最速で構築できるであろうゆとりな方法を採用させていただいた。