はじめに
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.zshrcを保存したら再読み込みして確認
rbenv --version
バージョンが表示されれば成功!
ruby-buildインストール
rubyのインストールを簡単にしてくれる
ruby-buildのソースをcloneする
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
動作確認
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.logLast 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)
以下のとこで簡単に説明してました
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.logLast 10 log lines:
rake 10.4.2
rdoc 4.2.0
./tool/rbinstall.rb:714:inrescue in block in <main>': uninitialized constant LoadErroe (NameError)
block in '
from ./tool/rbinstall.rb:712:in
from ./tool/rbinstall.rb:757:incall'
block in '
from ./tool/rbinstall.rb:757:in
from ./tool/rbinstall.rb:754:ineach'
'
from ./tool/rbinstall.rb:754:in
uncommon.mk:246: recipe for target 'do-install-all' failed
make: *** [do-install-all] Error 1
いろいろ調べてわかったこと
rubyコンパイル時にエラー
ちゃんとエラーメッセージを読んでなかったので理由が分かるまでに結構時間かかった。。。the_yokochiさんありがとう!
ちゃんとエラーメッセージを見なさいって再確認させてもらいました!
(タイポとは。。ロードエッロエってなんだよちくしょう!)
手順で使ってるパッチも見つけることができましたw
パッチなしでも直接書き換えればOKみたいです。