GentooでRuby-1.9.2でmikutter

やりたいことはいっぱいありますが、何故か最初の記事はmikutterです。mikutterはすばらしいついったークライアントです。Gentooでは公式Portage Treeにebuildが用意されていますので、簡単にインストールできます。ところで、そんなすばらしいmikutterはRuby-1.9以降で動かすといっそう素晴らしいそうです。ということで、私もやってみることにしました。

Ruby-1.9.2の導入。

GentooではRuby-1.9はまだHard Maskされています。その導入方法については既にたくさんの人が適切に説明しているので、ここでは簡単に触れるだけにします。手順としては、>=dev-lang/ruby-1.9.1 をunmaskして、ruby_targets_ruby19 のUSE Maskもunmaskして、RUBY_TARGETSにruby19を追加するだけですね。dev-ruby/*は~archをACCEPTしておくのが良いでしょう。そしてemerge --update --deep --newuse world。

echo 'dev-lang/ruby' >> /etc/portage/package.unmask
echo '-ruby_targets_ruby19' >> /etc/portage/profile/use.mask
echo 'dev-lang/ruby ~amd64' >> /etc/portage/package.accept_keywords/ruby
echo 'dev-ruby/* ~amd64' >> /etc/portage/package.accept_keywords/ruby
echo 'RUBY_TARGETS="$RUBY_TARGETS ruby19"' >> /etc/make.conf
emerge --verbose --update --deep --newuse world
eselect ruby set ruby19

必要なRubyライブラリを揃える。

(2011/06/07) ここから先の内容は著しく古くなっています。今やGentooruby-gtk2はruby19に対応しています。今のmikutterにはsqlite3-rubyは必要ありません。ruby-hmacとjsonもmikutter同梱のもので動作します。つまり、概ね何もせずともGentooRuby-1.9系の環境でmikutterを動かすことができます。もうちょっとすれば一発でemergeできるようになるはずです。Gentoo開発者ってすごいね!! また、rubygems-1.3.7-r5以降は/usr/local以下にgemをインストールしてくれます。

さて、ruby19(Ruby-1.9系をこう称することにします)が入りました。でもdev-ruby/以下の追加パッケージの多くがruby19に対応していません。mikutterを動作させるにはPortage Treeのパッケージだけでは足りないのです。そうそう、Gentooのruby19では元々のソースに同梱されているgemsが削除してありますので、dev-ruby/jsonを忘れずに入れておきましょう。わざわざ書くということは、つまり私はうっかりしたということです。

足りないのはdev-ruby/ruby-gtk2(と関連パッケージ)、dev-ruby/ruby-hmac、dev-ruby/sqlite3-rubyですね。こいつらをどうにかすればmikutterも動いてくれそうです。そして、これらのパッケージ(というか大半のdev-rubyなパッケージ)は、rubygemsに対応しています。

こちらを見ると、野良でgem installしてもemergeしたgemsと競合しないように読めたのですが、実際には普通に/usr/lib/ruby以下にインストールされてしまいます。何か私が勘違いしているのかもしれません。

取り敢えず、今はあまり深く考えずに、一般ユーザとしてgemsをインストールしました。

gem install --user-install ruby-gtk2 ruby-hmac sqlite3
mikutterを動かす。

ライブラリが揃ったようなので、mikutterを動かします。Ruby-1.9.2で動作させるのにはrevision 262以降のmikutterが必要ですので、svnでチェックアウトするか、変更部分をmikutter.rbに適用します。

svn checkout svn://toshia.dip.jp/mikutter/trunk mikutter
ruby mikutter/mikutter.rb

動きました!!

おまけ。

今回はrubygemsを使って野良でgemsをインストールしましたが、Portageにはruby-fakegem.eclassというものがあって、それを使うとgemをインストールするebuildを極めて簡単に書くことができます。
また、dev-ruby/sqlite3-rubyに関してはUSE_RUBY="ruby19"を追加するだけで動くようです(というか、動きました)。

ということで、なんとかなりそうな気がしたので必要パッケージのebuildを書いてLocal Overlayに置いて試そうかと思ったのですが、dev-ruby/rcairo-1.10.0-r2.ebuildを読むと、
# ruby19 → fails, and even crashes Ruby
なんて書いてあって大変そうだったのでやめました。でもそのうちトライしようと思います。gemで入れた分には動いているわけだしね。