ござるのブログ

覚え書きいろいろ

Lubuntu 14.04のTcl/Tk 8.6とrbenvに入れたRuby 2.1.5でRuby/Tkを使う

はじめに

前の記事で「現時点でRuby/Tkは8.6には対応してない」と書いたばかりなのですが、こちらのサイトでパッチが公開されていて、Ruby/TkでTcl/Tk 8.6が使えます。(注: Ruby 2.2.0ではパッチが必要なくなったようです。こちらを参照のこと。12/02/15追記)

Tcl/Tk 8.6のインストール

apt-gettk-devをインストールするとtk8.6-devが入ります。

$ sudo apt-get install tk-dev

パッチを当てて、Ruby 2.1.5をビルド

こちらのサイトから、「Ruby-2.1.3 p242用パッチ」tk-diff-ruby-2.1.3-p242.gzを、ありがたくいただいてきます。2.1.3用となってますが、2.1.5でも問題無いようです。

ruby-buildにはパッチを当てる機能があるのですが、stripのレベルを指定できないようなので、今回はruby-buildを使いません。まず、Rubyの公式サイトから、Ruby 2.1.5のソースruby-2.1.5.tar.gzをダウンロードし、以下のようにパッチを当ててビルドします。

$ tar zxf ruby-2.1.5.tar.gz
$ cd ruby-2.1.5
$ zcat ../tk-diff-ruby-2.1.3-p242.gz | patch -p1
$ ./configure --prefix=$HOME/.rbenv/versions/2.1.5-tk8.6 \
--with-tcltkversion=8.6 \
--with-tcl-lib=/usr/lib/x86_64-linux-gnu \
--with-tk-lib=/usr/lib/x86_64-linux-gnu \
--with-tcl-include=/usr/include/tcl8.6 \
--with-tk-include=/usr/include/tcl8.6 \
--enable-pthread
$ make

ビルドが問題なく完了したら、インストールして有効化します。

$ make install
$ rbenv global 2.1.5-tk8.6
$ rbenv rehash

サンプルを動かしてみます。

$ ruby ext/tk/sample/cd_timer.rb 10

f:id:gzalt:20141123114741p:plain

うまく動きました。

最後に

記事のタイトルが長い…