rbenvでruby2.2.1インストールの手順

# はじめに
rubyを触りたいけど、バージョン別で触りたいなと思いrbenvを導入することにした。
以前なんとなく入れてみたことあるけど、手順とか覚えてないから
備忘録取りながらやってみる。

[OS]
- Ubuntu14.10

[インストール対象]
- rbenv : 0.4.0-146-g7ad01b2
- ruby : 2.2.1

※1 gccやmake,gitなど必要なものはあらかじめインストールされているものとする
　（なんかつまづいたらググって解決！）
※2 libffi-dev をapt-get(aptitude)でインストールしておく
　（でないとrubyインストールできない）

# rbenvインストール
rubyのバージョンを切り替えるのに使う

1. まずはrbenvのソースをcloneする
`git clone git://github.com/sstephenson/rbenv.git ~/.rbenv`

2. .zshrcに以下を追加
`eval "$(rbenv init -)"`
他のサーバとかでも共通で使えるようにしたいから、やっぱり以下に変更
```export RUBY_ROOT="${HOME}/.rbenv"
if [ -d "${RUBY_ROOT}" ]; then
    PATH=${RUBY_ROOT}/bin:$PATH
    eval "$(rbenv init -)"
fi```

3. .zshrcを保存したら再読み込みして確認
`rbenv --version`
バージョンが表示されれば成功！

# ruby-buildインストール
rubyのインストールを簡単にしてくれる

1. ruby-buildのソースをcloneする
`git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build`

2. 動作確認
`rbenv install --list`
いっぱいバージョン情報が表示されれば成功！

# 2.2.1-type.patch を取得する
`git clone https://gist.github.com/liamdawson/5b20f45ae59755dcbc9d`

# ruby2.2.1 インストール
`rbenv install --patch 2.2.1 < [downloaded patch dir]/2.2.1-typo.patch`

# インストールできたか確認
`rbenv versions`
対象のバージョンがあれば成功

# 使用するrubyを設定する
```rbenv global 2.2.1
rbevn rehash```

# rubyが設定されているか確認
`rbenv version`
対象のバージョンが表示されれば成功

[念のため以下も試す]
`ruby --version`
対象のバージョンが表示されれば成功

あとはrubyを楽しむだけ！w

*******

# やってて困ったこと
## その一
こんなエラーが出た。。。
>ubuS14 developer% rbenv install 2.2.1                                                                                           [~]
 Downloading ruby-2.2.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28
 Installing ruby-2.2.1...

> BUILD FAILED (Ubuntu 14.10 using ruby-build 20150413-11-g89a23a4)

>Inspect or clean up the working tree at /tmp/ruby-build.20150430161255.4515
Results logged to /tmp/ruby-build.20150430161255.4515.log

>Last 10 log lines:
./libffi-3.2.1/.libs/libffi.a: error adding symbols: 不正な値です
collect2: error: ld returned 1 exit status
Makefile:325: recipe for target '../../.ext/x86_64-linux/fiddle.so' failed
make[2]: *** [../../.ext/x86_64-linux/fiddle.so] Error 1
make[2]: Leaving directory '/tmp/ruby-build.20150430161255.4515/ruby-2.2.1/ext/fiddle'
exts.mk:177: recipe for target 'ext/fiddle/all' failed
make[1]: *** [ext/fiddle/all] Error 2
make[1]: Leaving directory '/tmp/ruby-build.20150430161255.4515/ruby-2.2.1'
uncommon.mk:189: recipe for target 'build-ext' failed
make: *** [build-ext] Error 2

単純に libffi-dev というのを入れてないだけっぽい。。
ruby-buildで使っているみたいですね。([build-failure-of-fiddle-with-ruby-220](https://github.com/sstephenson/ruby-build/wiki#build-failure-of-fiddle-with-ruby-220))
以下のとこで簡単に説明してました
http://spring-mt.tumblr.com/post/26490987325/ruby-centos-6-2
> 外部関数インターフェイスのうち、マシンに依存する最も低いレイヤを提供するライブラリ

ふーん。。。
じ、時間できたらちゃんと調べよっとw

## その二

こんなエラーがでた

> ubuS14 developer% rbenv install 2.2.1                                                                                                   [~
Downloading ruby-2.2.1.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5a4de38068eca8919cb087d338c0c2e3d72c9382c804fb27ab746e6c7819ab28
Installing ruby-2.2.1...

> BUILD FAILED (Ubuntu 14.10 using ruby-build 20150413-11-g89a23a4)

> Inspect or clean up the working tree at /tmp/ruby-build.20150430165744.30597
Results logged to /tmp/ruby-build.20150430165744.30597.log

> Last 10 log lines:
                              rake 10.4.2
                              rdoc 4.2.0
./tool/rbinstall.rb:714:in `rescue in block in <main>': uninitialized constant LoadErroe (NameError)
	from ./tool/rbinstall.rb:712:in `block in <main>'
	from ./tool/rbinstall.rb:757:in `call'
	from ./tool/rbinstall.rb:757:in `block in <main>'
	from ./tool/rbinstall.rb:754:in `each'
	from ./tool/rbinstall.rb:754:in `<main>'
uncommon.mk:246: recipe for target 'do-install-all' failed
make: *** [do-install-all] Error 1

いろいろ調べてわかったこと
[rubyコンパイル時にエラー](http://d.hatena.ne.jp/the_yokochi/20150325)

ちゃんとエラーメッセージを読んでなかったので理由が分かるまでに結構時間かかった。。。the_yokochiさんありがとう！

ちゃんとエラーメッセージを見なさいって再確認させてもらいました！
~~(タイポとは。。ロードエッロエってなんだよちくしょう！)~~

手順で使ってるパッチも見つけることができましたw
パッチなしでも直接書き換えればOKみたいです。


# 参考URL(まとめ）

* http://tsuchikazu.net/linux_ruby_on_rails_install/
* http://d.hatena.ne.jp/the_yokochi/20150325
* https://github.com/sstephenson/ruby-build/issues/728
* https://github.com/sstephenson/ruby-build/wiki
* http://spring-mt.tumblr.com/post/26490987325/ruby-centos-6-2