Ubuntu Server 14.04 で rbenv を利用して Ruby をインストール


個人的なメモです。
まだ全然まとまってないのですぐ変わる。

# THE changelog 

- [心境の変化 @ 2013-05-06] やっぱrbenvのインストール先は`/usr/local`じゃなくて`/opt`にするわ
- [追記 @ 2013-05-06] Prereqぱっけーじについて

# 第1章 どうしようもない恋の唄

## rbenv

rbenv（ルベンヴ？)の話に入る前に、とりあえずうちの冷蔵庫の話からさせてもらうと、ハムがいっぱい余ってたんですね。で、卵のハム閉じというexperimental料理を作ってみたのだが、なかなか美味しい。

それを口いっぱいに入れながら空を見上げて、rbenvはどのように設定するのが良いだろうかと色々試した結果、こんな感じがいいんじゃないかと思うに至ったわけです。

- rbenvはsystem wideにインストゥットゥルーする
- rbenvは`/opt`につくる
- rbenvグループに所属する無邪気なユーザーだけがrbenvを利用できる
- rbenvのプラグインは使わない

今まではさ、`/etc/profile.d/`にrbenv環境変数を設定するスクリプトを置いて全ユーザーに有効にしてたけどさ、そうさ、いちいちroot権限で操作することで考えなくちゃいけないことが結構それなりにあれなので、厄介なので、そうなので、結局はユーザー個別で設定するので十分だったと考えるように少しずつそうなってきたのです。
どーせWebアプリ動かすときは、アプリごとに、ユーザー作るしね。

### rbenvグループを作るのだ

rbenvを使いたい強欲野郎(ユーザー)のために、文字通りrbenvという名をもったグループをつくろうと思う。
世間ではstaffグループを利用する例が多いですが、グループの用途はなるべく特化させたい、なぜならどう設定したか忘れるからね！あとで必ず忘れるから！
その点、rbenvグルーポという名前のグルーペであれば、一目見ただけで、いくらカニなみの記憶力しかない僕でもきっとすぐに「あッ、これはもしやrbenv用に作ったグループなのではないかしら」と気づくことができるのではないかと、俺の第6感がぴぴーと伝えてきたのです。

```none
$ sudo groupadd rbenv
```

### ユーザーのrbenvグループへの追加

上記しました通り、rbenvを使うユーザーはrbenvグループに参加していることが肝要なわけです。
もしあなたがあなたの分身たるユーザーをrbenvに参加させていない場合、rbenvを使えないのはもはや自明の理と言えるでしょう。

それでは追加しましょう。

```none
$ sudo gpasswd -a あなたのユーザー名 rbenv
Adding user あなたのユーザー名 to group rbenv
```

ちゃんと追加されたかな？

```none
$ grep rbenv /etc/group
rbenv:x:1002:あなたのユーザー名
```

されてる！！！たいへんだ！！！

グループにユーザーを追加したら、落ち着いて、ここで一度シェルにログインしなおしておきましょう。
exitしてまたやってきてもいいし、`su`するのももよいですね。

```none
$ su - あなたのユーザー名
```

### rbenvのインストーリング

ここからの作業には、どうやらgitというものがいるらしい。

```none
$ sudo apt-get install git
```

さて、rbenvのインストール先はどこがよいのだろうか。
人気の`/usr/local`だろうか`/var`だろうか、はたまた`/tmp`にいれて刹那のキラメキに酔いしれるべきだろうか。

そして結局は`/opt`にすることにした。
だって`/opt`を全然つかってなくて、もったいなかったから。

そんな単純な理由で僕は。

```none
$ cd /opt
$ sudo git clone git://github.com/sstephenson/rbenv.git rbenv
```
謎のコマンドを実行してrbenvディレクトリにrbenvグループ権限をつけておく。

```none
$ sudo chgrp -R rbenv rbenv
$ sudo chmod -R g+rwxXs rbenv
```

### ruby-buildプラグインをインストール

Rubyをビルドするためのruby-buildプラグインをインストールします。
プラグインは使わない、とか言ってた気がしますが、うそでした。
大人はうそをついているのです。しかも、間違いも犯すのです。

```none
$ mkdir /opt/rbenv/plugins
$ cd /opt/rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git
```


謎のコマンドを実行してruby-buildディレクトリにrbenvグループ権限をつけておく。

```none
$ chgrp -R rbenv ruby-build
$ chmod -R g+rwxs ruby-build
```

### 環境変数の設定

rbenvを使うには、環境変数を設定しなくていけません。
そうしないとrbenvでインストールしたRubyやコマンドたち、かけがえのないそういったものたちへのパスが通らなかったり、とても困ったことが起きるのです。

どうも、少しずつ私のテンションが下がってきたように感じます。

`~/.bash_profile`に以下を追記してくださいね。もし良かったらで構いませんので。

```bash
export RBENV_ROOT=/opt/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
```

追記していただけたでしょうか。
大変お手数おかけしまして、申し訳ございません。

追記していただけましたら、大変恐縮なのですが、更にもう一点、以下を実行していただけますでしょうか。
これで環境変数が読み込まれますので・・・
あっ、無理にとは言いません。どうかご容赦ください。

```none
$ source ~/.bash_profile
```

> ※rbenvのREADMEによるとUbuntuの場合には`.bashrc`に書くようにとあるが、それはUbuntu Desktopのターミナルアプリケーションでは`.bashrc`が読み込まれないため。したがってUbuntu Serverの場合には`.bash_profile`でよい。
> と思う。。。


## Rubyのインストール

お疲れ様でした！
rbenvがインストールできて、使用の準備ができました！
あとはRubyをインストールするだけです！
さようなら！

こんにちは！
ではRubyをインストールしましょう！

#### Q&Aコーナー
**Q:** 先生！Rubyって何ですか？
**A:** よく知りませんが、ゼルダの伝説でそういうものを見た気がします！

### Rubyのビルドに必要なパッケージのインストルル

RubyのビルドにはCコンパイラ？とかなんか追加で必要なパッケージがあるのでインストールしてくださいね！
嫌な人はしなくてもいいですが、それだと一生新しいRubyのインストールはできませんからね！

```none
$ sudo apt-get install git build-essential libssl-dev
```


### インストール可能なバージョンの確認

```none
$ rbenv install --list
```

```none
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
〜超略〜
  ree-1.8.7-2010.02
  ree-1.8.7-2011.03
  ree-1.8.7-2011.12
  ree-1.8.7-2012.01
  ree-1.8.7-2012.02
  topaz-dev
```

いっぱいでましたね！いっぱいありすぎて嫌になってきますね！
せっかくだから俺はこのreeってやつを選ぶぜ！やっぱりやめたぜ！

### BLING BLINGな2.1.1

せっかくだから俺は一番新しいやつを選ぶぜ！
BLING BLINGなピカピカの最新版！
俺らのブランニューキャデラック！
**2.1.1** だぜ！

```none
$ rbenv install 2.1.1
```

### rehash

みんな聞いてくれ。

部屋のにおいが気になる時はリセッシュをするよな？
俺はファブリーズ派だというやつもいるかもしれないけどな！
ま、それと同じで、新しいバージョンのRubyのインストール、もしくは実行コマンドを提供するgemのインストールなんかをした後には、黙ってrehashする必要があるってことさ。

```none
$ rbenv rehash
```

### global

最新のRubyをインストールしただけで満足かい？

俺は満足さ。

でもそれだけじゃget no satisfactionなkidsにはこれをあげよう。
この謎のコマンドを親の仇とばかりに実行してくれるか。
デフォルトに使用するRubyが入れたての2.1.1になるはずさ。

```none
$ rbenv global 2.1.1
```

```none
$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
```