依然として古いシステムが時々存在します.こうしたシステムでサポートされているpythonのバージョンごとにpythonスクリプトを書き,管理するのは非常に大変です.
調べてみたところ,
- ソースからコンパイル
- 2.6 の rpm からインストール
- easy_install を使ってインストール
といった方法が見つかりましたが,どれもバージョンごとに違う手続きだったり,しっくりしませんでした.
pyenvを使った方法が見つからなかったのでここに共有します.
ちなみに,centos6, RHEL6, centos7, RHEL7 でもこの手順でインストールできます.その場合はgitは yum install git
でインストールします
インストール環境
実機でも可能ですが,再現できる検証環境としてvagrantを用意します.この記事でもこの環境で動作確認済みです.
# ホストで実行
vagrant box add centos5 http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-5.10-i386_chef-provisionerless.box
vagrant init
vagrant up
vagrant ssh
一応,アップデートしておきます.必須ではありません.
# vmで実行
sudo yum -y update
cat /etc/redhat-release
# CentOS release 5.11 (Final)
Git をインストール
Centos5 / RHEL5 には git はデフォルトで入っていないので,EPELからインストールします
# vmで実行
sudo rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm
sudo yum -y install --enablerepo=epel git
pyenv をインストール
pyenv を github からインストールします.
# vmで実行
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 'eval "$(pyenv init -)"' >> ~/.bash_profile
exec $SHELL -l
必要なパッケージをインストール
yum で必要なパッケージをインストールします.
# vmで実行
sudo yum -y install gcc make
sudo yum -y install readline readline-devel
sudo yum -y install zlib zlib-devel
sudo yum -y install bzip2 bzip2-devel
sudo yum -y install sqlite sqlite-devel
sudo yum -y install openssl openssl-devel
python3をインストールする場合は,追加で以下のパッケージをインストールします.
# vmで実行
sudo yum -y install patch
python をインストールする
pyenv でインストール可能なバージョンをリストします.
# vmで実行
pyenv install -l
このなかで,今回は 2.7.12 をインストールします.
# vmで実行
pyenv install 2.7.12
pyenv global 2.7.12
pip も普通に使えます.
# vmで実行
pip install requests