Quantcast
Channel: Futurismo
Viewing all articles
Browse latest Browse all 91

[Linux Mint] rbenvで取得したrubyで ruby tkをつかう方法メモ

$
0
0

はじめに

Ruby tkを利用しようとしたところ、エラーがでて使えなかった。

% irb
irb(main):001:0> require 'tk'
LoadError: cannot load such file -- tk
        from /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /home/tsu-nera/.rbenv/versions/2.1.0/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from (irb):1
        from /home/tsu-nera/.rbenv/versions/2.1.0/bin/irb:11:in `
'

この解決方法についてメモします。

Ruby/TkはTcl/TkのツールキットをRubyから利用するライブラリ。

Rubyの標準ライブラリに入っている。

tk-devを入れてみる

もともと自分のPCに入っていたRubyはrbenvを使ってビルドした。 どうも、Ubuntu(Mint)環境では、tk-devをあらかじめインストールしておかないと、Rubyのビルド時にRuby/Tkがビルドされないようだ。

ということで、

sudo apt-get install tk-dev

他にも、いろいろツールが追加でインストールされる。

libxss-dev tcl tcl-dev tcl-lib tcl8.5-dev tk tk-lib tk8.5 tk8.5-dev tk8.5-lib x11proto-scrnsaver-dev

これで、Rubyを再インストールしてみる。

% rbenv uninstall ruby-2.1.0
% rbenv install ruby-2.1.0 -v

これでOKだろうとおもったけど、やっぱりエラーした。

ビルドログをみると、やっぱりスキップされてしまう。

configuring tk
...........
check struct members..
check libraries....
Use ActiveTcl libraries (if available).
Search tclConfig.sh and tkConfig.sh.....................
WARNING: found "/usr/lib/tclConfig.sh", but cannot find valid Tcl library for the tclConfig.sh. So, ignore it.

WARNING: found "/usr/lib/tkConfig.sh", but cannot find valid Tk library for the tkConfig.sh. So, ignore it.
..........
Fail to find [tclConfig.sh, tkConfig.sh]
Use X11 libraries (or use TK_XINCLUDES/TK_XLIBSW information on tkConfig.sh).

Search tcl.h..
Search tk.h..Search Tcl library..........
Search Tcl library..........
Warning:: cannot find Tcl library. tcltklib will not be compiled (tcltklib is disabled on your Ruby. That is, Ruby/Tk will not work). Please check configure options.

Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
If you have Tcl/Tk libraries on your environment, you may be able to use them with configure options (see ext/tk/README.tcltklib).
At present, Tcl/Tk8.6 is not supported. Although you can try to use Tcl/Tk8.6 with configure options, it will not work correctly. I recommend you to use Tcl/Tk8.5 or 8.4.
Failed to configure tk. It will not be installed.
configuring tk/tkutil
Failed to configure tk/tkutil. It will not be installed.
configuring win32
Failed to configure win32. It will not be installed.
configuring win32ole
Failed to configure win32ole. It will not be installed.

Ubuntu特有のバグだったもよう

バグだった模様。バッチを発見。

しかし、パッチの当て方がわからない。30分で挫折。

途方にくれていたが、ズバリ解決する記事を発見!

sudo apt-get remove tk-dev
sudo apt-get install tk8.4-dev tcl8.4-dev

sudo ln -sfn /usr/lib/tcl8.4/tclConfig.sh /usr/lib/tclConfig.sh
sudo ln -sfn /usr/lib/tk8.4/tkConfig.sh /usr/lib/tkConfig.sh

このとおりに実施したら、なんとなくうまくいったっぽい。


configuring tk
........
check struct members..
check libraries....
Use ActiveTcl libraries (if available).
Search tclConfig.sh and tkConfig.sh...............................
Valid [tclConfig.sh, tkConfig.sh] are found in [["/usr/lib", "/usr/lib"]]
Use [tclConfig.sh, tkConfig.sh] == ["/usr/lib/tclConfig.sh", "/usr/lib/tkConfig.sh"]
Use X11 libraries (or use TK_XINCLUDES/TK_XLIBSW information on tkConfig.sh).

Find Tcl/Tk libraries. Make tcltklib.so which is required by Ruby/Tk.
configuring tk/tkutil

成功、よかった ^_^;

% irb
irb(main):001:0> require 'tk'
=> true

Viewing all articles
Browse latest Browse all 91

Trending Articles