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+のバージョンによる問題は解決された。いつも対応が早くてすごい。