ruby1.8 / ruby1.9.1(ruby1.9.2p0)をdebianのupdate-alternativesツールで切り替える方法

元ネタの元ネタ:Rails Oceania Google GroupのDavid Lee氏
元ネタ:pk stuff氏 http://krnjevic.com/wp/?p=209

いつも忘れるのでメモ。

debian(ubuntuも?)には、cloneや同じソフトウェアの異なるバージョンを管理するために、update-alternativesというユーティリティが付属しています。
しかし、デフォルトでは、rubyの実装を切り替える為の設定はなされていません。
後述のスクリプトで切り替え候補にrubyの各バージョンを追加してあげることで、以下のコマンドで簡単にruby1.8 / ruby1.9系実装を切り替えることができるようになります。

update-alternatives --config ruby
update-alternatives --config gem

以下はpk stuff氏のスクリプトを元に、以下の変更を加えたものです。

  • 10/4時点のdebian squeezeで動くように変更
  • rubygems1.9.1も対象に
kouhei@k07:~$ cat s/settings/setupruby.sh 
#!/bin/sh
apt-get install ruby1.8 irb1.8 rubygems1.8 ruby1.9.1 irb1.9.1
update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.8 500 \
	--slave   /usr/share/man/man1/ruby.1.gz ruby.1.gz \
	/usr/share/man/man1/ruby1.8.1.gz \
	--slave   /usr/bin/ri ri /usr/bin/ri1.8 \
	--slave   /usr/bin/irb irb /usr/bin/irb1.8

update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 400 \
	--slave   /usr/share/man/man1/ruby.1.gz ruby.1.gz \
	/usr/share/man/man1/ruby1.9.1.1.gz \
	--slave   /usr/bin/ri ri /usr/bin/ri1.9.1 \
	--slave   /usr/bin/irb irb /usr/bin/irb1.9.1
update-alternatives --install /usr/bin/gem gem /usr/bin/gem1.9.1 150

update-alternatives --config ruby
update-alternatives --config gem

あ、debian固有でない手段としてはrvmもありますので、ばりばりrubyなひとはそっちを導入した方がいいかと思います。
http://rvm.beginrescueend.com/

でも、debian提供のrubyパッケージを用いているならこっちの方がお手軽かな。