ページ目次
Python2.6から2.7へ
CentOS6系のPython
SakuraインターネットのVPSでCentOS6系を選択している場合、サーバーにはPython2.6がデフォルトでインストールされています。もちろんこのままでも何の問題もなく使用できますが、以前投稿した無料SSLプロジェクトのLet’s Encryptを使用する場合、Python2.7のインストールが必須となってきます。
SSLが無料で使えるLet’s EncryptをNginxに投入した
公式からダウンロードしてビルドする
Python公式サイトから2.7系のソースコードをダウンロードします。(最新版Python2.7.13 – 2017.1.3現在)
以下はルート権限でおこないます。
# cd /usr/local/src
# curl -O https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz
# tar xzf Python-2.7.13.tgz
# cd Python-2.7.13
# ./configure
# make
# make altinstall
make altinstallは、以前のPythonを上書きしてしまわないための措置です。Python公式で推奨されているので、こちらに従いましょう。
Pythonのビルド
ビルドしたPython2.7を移しかえる
ビルドが無事終了したら、/usr/binディレクトリを見てみます。pythonの他にpython2.6というバイナリファイルが存在していると思います。もしなければ、pythonをそっくりそのままコピーして作成しておきましょう。
# cp /usr/bin/python /usr/bin/python2.6
この段階ではどちらもPython2.6が内包されています。バージョンを確認してみます。
# python --version
Python 2.6.6
# python2.6 --version
Python 2.6.6
では、先程ビルドしたPython(2.7.13)を/usr/bin/pythonに移します。この時コピーは注意です!
python2.6ディレクトリが元から存在していた場合、このディレクトリには/usr/bin/pythonへシンボリックリンクが貼られているはずです。したがって、コピーすると/usr/bin/python2.6の中身もPython2.7に書き換えられてしまい、後々困ることになります!!
# mv /usr/local/src/Python-2.7.13/python /usr/bin/python
これでpythonコマンドを打つとPython2.7が使えるようになります。以前のPython2.6はpython2.6コマンドで使用することができます。
# python --version
Python 2.7.13
# python2.6 --version
Python 2.6.6
これでPython2.7が使用できるようになりました。
yumのパスを変えることをお忘れなく
Python2.7が無事使えるようになりましたが、yumでインストールしたパッケージリストを見ると、いままでインストールしてきたものが一切表示されなくなっています。これは、yumを動かしているPythonが2.7になったためです。
前バージョンのPythonを残す必要があったのはこのためです。
yumのなかで指定されているパスを元のPython(2.6)へのパスに変更してあげれば、すぐに修復できます。
# vi /usr/bin/yum
#!/usr/bin/python → #!/usr/bin/python2.6
これで問題はなくなったはずです。ちなみに、yum本体がアップデートされるたびにパスが/usr/bin/pythonに書き換えられるので、アップデートでyum本体がバージョンアップされたらその都度、パスの書き換えを行いましょう。
Pythonパッケージマネジャーのpipをインストール
すでにインストールされている場合
PythonのパッケージマネジャーpipはPython2系であれば2.7.9まで、Python3系は3.4までは自動でインストールされているようです。
pip –version
で、バージョン情報が確認できれば問題なくインストールされています。
バージョン情報が表示された場合も念のため、pip自体を更新しておきます。
# pip install -U pip
pipを取得
バージョン情報が表示されなかった場合、新たにインストールする必要があります。
yumでインストールする方法もあるようですが、get-pip.pyを使用する方法が圧倒的に簡単です。また、yum自体はPython2.6で動いていますので(上述)、この方法でインストールします。
# curl -kL https://bootstrap.pypa.io/get-pip.py | python
確認します。
# pip --version
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)
これでpipがインストールされ、Python2.7へのアップデートも完了です。
pipでpythonパッケージをインストールする時にエラーが出る
正直ちょいめんどい
アップデート完了後、pipでモジュールをインストールしようとすると、エラーが起こりました。モジュール書き込み時にパーミッションエラーが起こっている模様。ならば、root権限で。と、sudoコマンドを付けてみると、今度はまた違ったエラーが起こります。
どうやら、sudoコマンド時のpipのPATHが別のところを見ているらしい(/usr/bin/pipを見ていない)。どうしたもんかと色々と調べた結果、こうなりました。
$ sudo `which pip` install パッケージ名
or
$ sudo /usr/bin/pip install パッケージ名
バイナリのフルパスを指定する。と、いう。解決策になっているのかどうかは内緒。
ちなみにcertbotを使ってSSLを導入する時にPython2.7及びvirtualenvというPythonパッケージが必要になったのでした。
SSLが無料で使えるLet’s EncryptをNginxに投入した
“さくらのVPSでCentOS6のPythonを2.7にアップデートする” への1件の返信
コメントは受け付けていません。