Debian(etch)を使ってるのが悪い。とっととlennyに移行しろよって。
http://homepage.mac.com/matsuan_tamachan/mail/ProcMailRc.html
http://homepage.mac.com/matsuan_tamachan/software/BogofilterNihongo.html
を参考に。
mecab-ruby
mecab-rubyの最新版をインストールしようとしたら、Makefileができないって怒られた。
# make
g++ -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -DHAVE_MECAB_H -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c MeCab_wrap.cpp
MeCab_wrap.cpp: In function 'const mecab_node_t* mecab_node_t_begin_node_list(mecab_node_t*, size_t)':
MeCab_wrap.cpp:1814: error: 'struct mecab_node_t' has no member named 'sentence_length'
MeCab_wrap.cpp:1816: error: 'struct mecab_node_t' has no member named 'begin_node_list'
MeCab_wrap.cpp:1817: error: 'struct mecab_node_t' has no member named 'begin_node_list'
MeCab_wrap.cpp: In function 'const mecab_node_t* mecab_node_t_end_node_list(mecab_node_t*, size_t)':
とか・・・・
mecab -v すると、0.93だから http://sourceforge.net/projects/mecab/files/ から0.93持って来てREADMEのとおりやったらMakeできた。
rubymailとopen4
rubymail/open4が必要なので、gemでインストール。これまたDebian(etch)のgemは0.9.0で全然動かない。
ソースからインストールして、gem1.8でインストール。
gem1.8 install rmail
gem1.8 install open4
であっさりO.K
require 'rubygems'
さて、環境は整ったのでbogofilter-nihongo.rbをダウンロードして、/usr/local/bin当たりにおいて、chmod 755 したんだけど動かない。
/usr/local/bin/bogofilter-nihongo.rb:33:in `require': no such file to load -- open4 (Load Error)
って言われる。そーいえば、rubyのライブラリパスってどうなってるんだ?
ここによると、ロードパスを調べるには
$ ruby -e 'puts $:'
ってやるらしい。あぁ、変数$:に出てるのね。
/usr/local/lib/site_ruby/1.8
/usr/local/lib/site_ruby/1.8/i486-linux
/usr/local/lib/site_ruby/1.8/i386-linux
/usr/local/lib/site_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/i486-linux
/usr/lib/ruby/1.8/i386-linux
って、そこにgemで入れたopen4とか無いし。
gemで入れたライブラリを使えるようにする方法があるはず。
require 'open4'じゃなくて、gem 'open4'ってやるといいよって情報がいっぱい出るけど、そもそもgemってmethodが無いって怒られる。
undefined method `gem' for main:Object (NoMethod Error)
このエラーメッセージでググるとrailsの情報でrequire_gemじゃなくてgem使えって情報が出て、いや、そのgemが使えなくて困ってるんだから・・・・。
んがー、ってようやく見つけた。
http://haraita9283.blog98.fc2.com/blog-entry-285.html
# foo をインストールした場合、foo を require する前に require "rubygems" しておく。
おぉ、できた。
なんか、出力されない
うーん、なんでじゃろ?189行目で詰まってる。
pid, stdin, stdout, stderr = Open4.popen4 "bogofilter #{bogoflag}" # stdin.puts body puts body
stdinって標準出力のなんかだとおもうんで、putsにしてやった。
でも、そうするとなんか機能してないよ!?
うーん。