xxxcaqui.log

ツッコミお待ちしています

Amazon Linuxでrbenvを使ってRuby2.0を入れてみた。

AWSでAmazon Linux上に環境構築してるときに、ちょっとハマったのでメモ。

Amazon LinuxRuby

Amazon Linx(2013.03)にデフォルトで入っているRubyは1.8.7でした。
yumで入れられるのも同じバージョン。

絶望した! 1.9.3すらサクッと入れられないことに絶望した!

というわけで、rbenvを使ってRuby2.0を入れていきます。

必要なパッケージを入れる

Amazon Linuxは最小限のパッケージしか入っていないディストリです。
そのため、Rubyのコンパイルやrbenvのインストールに必要なパッケージも結構不足しているので、ここで入れておきます。

$ sudo yum install gcc git openssl-devel

rbenv, ruby-buildを入れる

rbenv

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

ruby-build

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

Rubyを入れる

Rubyをコンパイルするために、以下のコマンドを実行します。
なお、先程入れたrbenvとruby-buildが正常にインストールされていれば、Tabによる自動補完が有効になっているはずです。

$ rbenv install 2.0.0-p0

上記コマンドを実行すると、

Downloading ruby-2.0.0-p0.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
Installing ruby-2.0.0-p0...

と表示されてしばらく固まりますが、別窓でtopを実行してみるとCPU使用率が100%になっていて、EC2たんが頑張ってくれているのがわかります。*1

このコンパイル時だけでも、ハイCPUインスタンスとか使うといいと思います。
c1.mediumだと、1時間使っても20円しないので。

入れたRubyを使う

システムがデフォルトで使用するRubyのバージョンを指定します。

$ rbenv global 2.0.0-p0

トラブルシューティング

configure: error: no acceptable C compiler found in $PATH

gccが入っていません。
sudo yum install gcc してください。

The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

openssl-develが入っていません。
sudo yum install openssl-devel してください。

*1:ただし、高確率で「Write failed: Broken pipe」ってなりますw