Fedora17でAmazon Elastic MapReduce Ruby Clientを使った際のメモ

Amazon Elastic MapReduce Ruby Clientがruby 1.8用であるため、Fedora17では使えない。
ruby1.8をインストールしてAmazon Elastic MapReduce Ruby ClientをFedora17で使えるようにした。
なお、https://github.com/rbotzer/elastic-mapreduce-rubyruby1.9用のクライアントがあるが、
このクライアントを使ってもEMRを使う事が出来なかった。

ruby1.8のインストール

Fedora17でruby 1.8.7のインストール作業メモ

1. ruby 1.8.7のソースをダウンロードする

2. パッチを当てる

ruby1.8.7はglibc2.14が原因でコンパイルが通らないとのこと。
http://sourceforge.jp/forum/message.php?msg_id=59221

以下のパッチをダウンロードして、
http://bugs.ruby-lang.org/attachments/1931/stdout-rouge-fix.patch

以下の手順でパッチを適用する。

mkdir ruby
mv ruby-1.8.7-p371.zip ruby
mv stdout-rouge-fix.patch ruby
cd ruby
unzip ruby-1.8.7-p371.zip
cd ruby-1.8.7-p371
patch -p1 < ../stdout-rouge-fix.patch 

3. makeしてインストールする

今回は/usr/local/ruby/1.8.7にインストールする。
以下の手順でコンパイルとインストールを実行する。

./configure --prefix=/usr/local/ruby/1.8.7
make
sudo make install

4. rubyruby1.8.7に切り替える

以下のコマンドで、ruby1.8.7に切り替える。

sudo alternatives --install /usr/bin/ruby ruby /usr/local/ruby/1.8.7/bin/ruby 30

環境変数PATHにruby1.8.7へのパスを追加する。
~/.bashrcに以下の行を追加する。

export PATH=/usr/local/ruby/1.8.7/bin:$PATH

5. Amazon Elastic MapReduce Ruby Clientをインストールする
後はマニュアル通りにインストールして使用すればよい。

つまづいた点

credentials.jsonを作成して実行し、ログを見ると以下のようなエラーが出た。

the given ssh key name was invalid

原因は、EC2のキーペアをUS EASTで作成していたため。
TOKYOのEC2でキーペアを作りなおして、TOKYOのEMRを使ったら動いた。実に間抜け。