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