複数バージョンの LL を入れる話を集めてみた

理由はいろいろあると思いますが、ある言語の複数のバージョンを一つのシステム上で使い分けたい場合があります。そのためのツールと記事をただただ並べてみました。1

※ ところで小規模、中規模案件で人気のありそうな PHP こそこういうツールが必要な気がするのですが、そういう話は聞かないですね。mod_php は PHP 単体で環境が完結しないので難しいのかもしれません。

PHP については phpfarm を使うと複数のバージョンを同一マシンに簡単にインストールできます。

cf. phpfarmを使って複数バージョンのPHPをインストール

ただし 2010-10-31 現在ではインストールできるだけで動的な切り替えなど気の利いた機能はありません。

比較表

 本体の切り替え要件ライブラリの切り替え
RubyrvmbashBundler
PerlperlbrewPerllocal::lib
PythonpythonbrewPythonvirtualenv

意外なことに Perl, Python は複数バージョン入れるツール自身が元の言語で書かれています。Perl はシステム標準に入っているディストリビューションが多いからまだ分かるけど、Python でこの戦略を採用するのはちょっと大胆な気がします。

※ Python は virtualenv だけでも複数バージョンを切り替えて使うことができます。ただし、インストールや動的な切り替えまでは面倒みてくれません。そんなときに pythonbrew が便利なようです。

rvm

rvm の記事はもう書いてあります。

rvmを使ってREEへの移行を考える - あーありがち(2010-07-17)

Bundler

Bundler の記事ももう書いてあります。

Bundler 0.9.26 を触ってみた - あーありがち(2010-07-19)

perlbrew

perlbrew があれば perlbrew で切り替えて使う Perl のための lib はシステム標準のものとは分離しているので、local::lib はなくても大丈夫ということのようです。複数の lib 環境を使いたければたぶん local::lib はあった方が便利だと思います。その辺も rvm + Bundler 環境に似ているんじゃないでしょうか。

local::lib

root 権限が必要なく、アプリとライブラリをセットにして配布するといった用途にも使えるみたいです。

cpanminus

これは完全に脱線です。2010年に開発の始まった新しいパッケージ管理ツールで、基本的には従来からある cpan, cpanplus の代わりになります。よりコンパクトに、つまり快適に動いて嬉しいらしいです。cpan-outdated と組み合わせたり、cpan に上がっていないパッケージをインストールしたりできるとか。2

cpanminus は gihyo.jp のモダン Perl 連載で CPAN を取り上げた直後に開発が始まっていて、まだあまりまとまった日本語ドキュメントはないっぽいですね。

pythonbrew

perlbrew inspired.

virtualenv

ずっと勘違いしていました。virtualenv は rvm と同じレイヤーの仕事はしていないんですね。

  • rvm や perlbrew のようには処理系のインストールはしない
  • インストール済みの処理系のうち、何をどこで使います、という環境構築ができる

ツール、と考えるとよいようです。rvm で特定のディレクトリに .rvmrc を置いたときのようなイメージでしょうか。

Python はもともと複数バージョンをシステムにインストールすることが特に面倒じゃないのかも。だとしたら virtualenv のアプローチだけで確かに十分かもしれません。

ただし easy_install は virtualenv を考慮してくれないので pip を使うとよい、という感じのようです。

pip も試してみないといけないなぁ。

homebrew

これも完全に脱線。MacOSX の比較的コンパクトで最近評判のいいパッケージングシステム。Ruby製。ややこしい。

  1. 頑張って調べたんだけど、半年以上前に miyagawa がサラッと tweet しててちょっと凹んだ。まぁ間違ってないっぽいのでよかった。 

  2. それ以前はローカルで好きな場所にインストールするには Perl Makefile.PL が主流。 

More