インフラエンジニアbacchiのわかったことまとめ

bacchi.me

rvmで入れたRuby2.0にTcl/Tkが入っていない場合の対処法

ローカルサーバーとこのブログのサーバーは rvm で Ruby を使っています。

Mac で Ruby/tk を使って遊んでやろうと思い、まずは tk で GUI が動かせるか確認しようと下記のテストプログラムを実行しました。

require "tk"
TkButton.new(nil,:text => 'hello',
:command => proc{print "hellon"}).pack(:fill=>'x')
TkButton.new(nil,:text => 'quit',:command =>
proc{exit}).pack(:fill=>'x')
Tk.mainloop

ウインドウがポンと出るとワクテカしていると、下記のようなエラーが・・

tk が入っていない・・(^p^)

/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require\': cannot load such file -- tk (LoadError)
    from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require\'
    from test.rb:1:in `

色々調べまくって、Rubyのインストール時に--with-tk --with-tclのオプションが必要なことが判明

下記のように Ruby の再インストールを行いました。

rvm reinstall 2.0.0 --enable-shared --enable-pthread --with-tk --with-tcl

Rubyを再インストールして、tkが入ったか確認!

うん、ちゃんと入っている♪

% irb
2.0.0-p481 :001 > require "tk"
LoadError: cannot load such file -- tk
    from /Users/bacchi/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require\'
    from /Users/bacchi/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require\'
    from (irb):1

今回は OSX 10.9 で設定を行いましたが、Unix 系や Linux 系の OS でも問題ないはずです。

また、Ruby1.9 や Ruby2.1 でも同じようにインストールすることで Tcl/Tk が使えるようになるはず。多分・・(^p^)

  • B!