rvmでrabbitを動かすまで

どこからともなくがきこえてきた。ここのところrabbitを動かしていなかったこともあり、また初のメジャーリリースがあったこともあり、この機会にrvmでインストールしたRuby 1.9.2でRabbit 1.0.1を動かすところまでやってみた。まず、rvmのインストールから。

$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
$ . "$HOME/.rvm/scripts/rvm"

本当はvim ~/.bash_profileなどやる(参照)のだが、ここでは適当にごまかしておいてさっさとRuby 1.9.2のインストールに移る。

$ rvm install 1.9.2
Installing Ruby from source to: /home/akira/.rvm/rubies/ruby-1.9.2-p180, this may take a while depending on your cpu(s)...

ruby-1.9.2-p180 - #fetching 
ruby-1.9.2-p180 - #downloading ruby-1.9.2-p180, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 8609k  100 8609k    0     0  2464k      0  0:00:03  0:00:03 --:--:-- 2693k
ruby-1.9.2-p180 - #extracting ruby-1.9.2-p180 to /home/akira/.rvm/src/ruby-1.9.2-p180
ruby-1.9.2-p180 - #extracted to /home/akira/.rvm/src/ruby-1.9.2-p180
ruby-1.9.2-p180 - #configuring 
ruby-1.9.2-p180 - #compiling 
ruby-1.9.2-p180 - #installing 
ruby-1.9.2-p180 - Updating #rubygems to the latest.
Removing old Rubygems files...
Installing rubygems dedicated to ruby-1.9.2-p180...
Installing rubygems for /home/akira/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
Installation of rubygems completed successfully.
ruby-1.9.2-p180 - Updating #rubygems to the latest.
Removing old Rubygems files...
Installing rubygems dedicated to ruby-1.9.2-p180...
Installing rubygems for /home/akira/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
Installation of rubygems completed successfully.
ruby-1.9.2-p180 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.2-p180 - #importing default gemsets (/home/akira/.rvm/gemsets/)
Install of ruby-1.9.2-p180 - #complete

インストールできたRuby 1.9.2を使おう。

$ rvm 1.9.2

そしてrabbitをインストールする。

$ gem install rabbit
etching: pkg-config-1.1.2.gem (100%)
Fetching: glib2-1.0.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: atk-1.0.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: cairo-1.10.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: pango-1.0.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: gdk_pixbuf2-1.0.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: gtk2-1.0.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: rsvg2-1.0.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: poppler-1.0.0.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing rabbit:
    ERROR: Failed to build gem native extension.

        /home/akira/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb
[...]
checking for poppler-glib... no
*** extconf.rb failed ***
[...]
Gem files will remain installed in /home/akira/.rvm/gems/ruby-1.9.2-p180/gems/poppler-1.0.0 for inspection.
Results logged to /home/akira/.rvm/gems/ruby-1.9.2-p180/gems/poppler-1.0.0/ext/poppler/gem_make.out

あ、コケた。パッケージが足りなかったようだ。適当にあたりをつけてインストールし、再実行。

$ sudo aptitude install libpoppler-glib-dev
[...]
$ gem install rabbit
Building native extensions.  This could take a while...
Fetching: hikidoc-0.0.4.gem (100%)
Fetching: nokogiri-1.5.0.gem (100%)
Building native extensions.  This could take a while...
Fetching: rack-1.3.1.gem (100%)
Fetching: haml-3.1.2.gem (100%)
Fetching: rdtool-0.6.23.gem (100%)
Fetching: coderay-0.9.8.gem (100%)
Fetching: rabbit-1.0.1.gem (100%)
Successfully installed poppler-1.0.0
Successfully installed hikidoc-0.0.4
Successfully installed nokogiri-1.5.0
Successfully installed rack-1.3.1
Successfully installed haml-3.1.2
Successfully installed rdtool-0.6.23
Successfully installed coderay-0.9.8
Successfully installed rabbit-1.0.1
8 gems installed

インストールできたrabbitを動かしてみる。

$ rabbit test.rab

と、ここで問題発生。Debian/squeezeで実施していたのだが、この環境でのGtk+のバージョン(2.20.1)がRabbit 1.0.1の想定よりも古かったようでGDKKEYfoobarという定数がないというエラーが多発した。

/home/akira/.rvm/gems/ruby-1.9.2-p180/gems/rabbit-1.0.1/lib/rabbit/keys.rb:13:in `<module:keys>': uninitialized constant Gdk::Keyval::GDK_KEY_Escape (NameError)
[...]

過去にこれとはちょうど逆の話があったようで、こちらの回避策のちょうど逆をやってやることで手元の問題を回避できた。ひとまずはこれでよしとしよう。

追記

すぐにリリースされた1.0.2でGtk+のバージョンによる問題は解決された。いつも対応が早くてすごい。