rbenvを全ユーザ用にインストールする

システムで利用するrubyのバージョン管理にaptやyumは使いたくないので、rbenvでやってしまいましょう。という話。

rbenv のインストール

インストール場所は /opt/ruby 以下。別に/usr/localでも問題ないけど、私の管理ポリシ的にそうしてる。

# mkdir -p /opt/ruby
# cd /opt/ruby
# git clone git://github.com/sstephenson/rbenv.git

/etc/profileに追記する、のは緊急時の影響が大きいので、rbenv環境変数系はまとめて1ファイルにしてユーザごとにsourceさせるように変更するとよい気がする。/etc/profile内でevalしたくはないよね。

# cat >> /etc/profile

RBENV_ROOT=/opt/ruby/rbenv
export RBENV_ROOT

PATH=/opt/ruby/rbenv/bin:${PATH}
eval "$(rbenv init -)"
^D

ここまでは、まあ、普通。

ruby-build のインストール

ruby-buildは便利なのだけど、rubyのバージョンごとに設定ファイルが作られていて、新しいバージョンのrubyを入れようと思ったらこのruby-buildごとインストールしなおさなくてはいけなくて、残念。

もういっそinstallなんてしないでも、git pull してくるだけで新バージョンの情報が手に入るようにしてみた。

# cd /opt/ruby
# git clone git://github.com/sstephenson/ruby-build.git
# find /opt/ruby/ruby-build/bin/* | xargs -I{} ln -s {} /opt/bin
# cat >> /etc/profile

PATH=${PATH}:/opt/bin
^D

インストール手順は以上で終わり。よくできているので、間違えなければやるべきことは少ない。

rubyをinstallする

うちの子の前準備。うちの子gcc入ってなかった。悲しかった。うちの子の名前何がいいですかね。いまのところ「はるだんじ」なんですけど。嘘ですけど。

# apt-get update; apt-get install -y build-essential automake autoconf cmake
# source /etc/profile

rubyを入れる。インストール可能なバージョンを表示するためには rbenv install -l と、知らないうちにオプションが必要になってた。

# rbenv install -l
...
# rbenv install 1.9.3-p327
# rbenv rehash
# rbenv global 1.9.3-p327

アップデートしたいとき

新しいrubyのバージョンが出て、アップデートしたいと思ったとき、通常であれば

$ rbenv install -l
...                                                           <== …あれ?新しいrubyバージョンがない
...                                                               rbenvをアップデートしなきゃ!
...                                                               rbenvじゃなくてruby-buildの方…?
$ cd /tmp
$ git clone https://github.com/sstephenson/ruby-build.git     <== このURLを知るためにググる
$ cd ruby-build
$ sudo ./install.sh                                           <== 一瞬で終わって不安…
$ rbenv install -l                                            <== あ、出たでた。良かった…

という感じの行動をとるので非常にやる気を削がれる。しかもインストールできてもそれまで入れたgemが引き継がれてなくて二度ガッカリする。*1

今回の記事で作った環境であれば、

$ cd /opt/ruby/ruby-build
$ sudo git pull
$ rbenv install -l

で新しいrubyバージョンの定義ファイルが入るので、時間とやる気を節約できる。


リンク。 http://yatmsu.hatenablog.com/entry/20120413/1334300058

*1:gem引継ぎがないことは利点にもなるので、この記事では対処してない