はじめに
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のバージョンを切り替えるのに使う
-
まずはrbenvのソースをcloneする
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
-
.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