rvm+tcl/tk的安装

暑假放假一个月了,这一个月里百无聊赖。在尝试了玩游戏、画画、看游戏视频、跟美剧,最终纷纷腻掉之后,还是决定继续完成上个学期中期开始搞起的那个字模转换程序。

之前在这篇文章中也提到了要用shoes写GUI,那中类似于css的方法确实很好用。不过鉴于当时只有一台电脑,而且是windows,搞ruby实在是头疼,遂决定等几个月研究生开学了有新电脑了把旧电脑装成ubuntu,会轻松很多。

不过理想很丰满,现实很骨感。昨天下午尝试了整整一下午,结果一直装不好shoes。一怒之下,我决定还是用自己原来用过的东西,回归tk好了。

于是我抓起最后这根稻草,果断$ dpkg -l tk,发现ubuntu果然自带,还是最新版的8.6,奈斯。

于是信手搞了个Hello World!

结果就这也报错。

1:in `require': no such file to load -- tk (LoadError)

于是跑到/.rvm/src/ruby-1.9.3-p547/ext/tk下,$ruby extconf.rb看看缺了些什么。

log如下。

juiceyang@juiceyang-pc:~/.rvm/src/ruby-1.9.3-p547/ext/tk$ ruby extconf.rb
check functions.checking for ruby_native_thread_p() in ruby.h... yes
.checking for rb_errinfo() in ruby.h... yes
.checking for rb_safe_level() in ruby.h... yes
.checking for rb_hash_lookup() in ruby.h... yes
.checking for rb_proc_new() in ruby.h... yes
.checking for rb_obj_untrust() in ruby.h... yes
.checking for rb_obj_taint() in ruby.h... yes
.checking for rb_set_safe_level_force() in ruby.h... yes
.checking for rb_sourcefile() in ruby.h... yes

check struct members.checking for struct RArray.ptr in ruby.h... no
.checking for struct RArray.len in ruby.h... no

check libraries.checking for t_open() in -lnsl... no
.checking for socket() in -lsocket... no
.checking for dlopen() in -ldl... yes
.checking for log() in -lm... yes

Use ActiveTcl libraries (if available).
Search tclConfig.sh and tkConfig.sh...............................
Fail to find [tclConfig.sh, tkConfig.sh]
Use X11 libraries (or use TK_XINCLUDES/TK_XLIBSW information on tkConfig.sh).
checking for XOpenDisplay() in -lX11... yes

Search tcl.h.checking for tcl.h... no
......
Search tk.h.checking for tk.h... no
......Can't find "tcl.h".
Can't find "tk.h".

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

合着tcl和tk都没有?!我赶紧再次$ dpkg -l以防自己老眼昏花幻视了,结果发现都有啊!

好吧,果断还是得祭出stackoverlfow。发现8.6版本还不支持...

于是又把8.6版本的tcl/tk删除掉。然后从这里下载到了8.4.20版本的tcl/tk。(据说大神都是直接wget从sourceforge上下...)

然后将tcl和tk分别解压,添加到$PATH里,然后分别安装如下。

$ cd tcl8.4.20/unix
$ ./configure --prefix=/usr --enable-shared
$make
$make install
$ cd ..
$ cd tk8.4.20/unix
$ ./configure --prefix=/usr --enable-shared
$make
$make install

然后再$ruby test.rb,发现没问题了。