インストール: POPFIle 1.0.0(失敗)

| トラックバック(1)

もはや、離れられないスパムフィルタPOPFileをインストール。
長いこと愛用してきたが、ついに、1.0.0になったようだ。

POPFile - Automatic Email Classification

popfile-1.0.0.zip

まず、日本語解析のためにKakasiを入れる。

$ wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz
$ ./configure --prefix=/usr
$ make
$ sudo make install

そして、必要になるモジュールのチェック。

Webページのマニュアルを見ると以下のモジュールが必要になるようだ。
しかし、リリースノートによると、必要なモジュールはもっと少ない。

DBI
DBD::SQLite(SQLiteを使うなら)
DBD::mysql(MySQLを使うなら)
Digest::base
Digest::MD5
HTML::Tagset
MIME::Base64
MIME::QuotedPrint
Date::Parse
HTML::Template
Text::Kakasi
Encode
IO::Socket::Socks(SOCKSを使うなら)
IO::Socket::SSL(SSLを使うなら)
Net::SSLeay(SSLを使うなら)

とりあえず、下記のスクリプトによって、モジュールが存在するかチェックした。


echo DBI
perl -MDBI -e 'print $DBI::VERSION' 2> /dev/null
echo ""
echo DBD::SQLite
perl -MDBD::SQLite -e 'print $DBD::SQLite::VERSION' 2> /dev/null
echo ""
echo DBD::mysql
perl -MDBD::mysql -e 'print $DBD::mysql::VERSION' 2> /dev/null
echo ""
echo Digest::base
perl -MDigest::base -e 'print $Digest::base::VERSION' 2> /dev/null
echo ""
echo Digest::MD5
perl -MDigest::MD5 -e 'print $Digest::MD5::VERSION' 2> /dev/null
echo ""
echo HTML::Tagset
perl -MHTML::Tagset -e 'print $HTML::Tagset::VERSION' 2> /dev/null
echo ""
echo MIME::Base64
perl -MMIME::Base64 -e 'print $MIME::Base64::VERSION' 2> /dev/null
echo ""
echo MIME::QuotedPrint
perl -MMIME::QuotedPrint -e 'print $MIME::QuotedPrint::VERSION' 2> /dev/null
echo ""
echo Date::Parse
perl -MDate::Parse -e 'print $Date::Parse::VERSION' 2> /dev/null
echo ""
echo HTML::Template
perl -MHTML::Template -e 'print $HTML::Template::VERSION' 2> /dev/null
echo ""
echo Text::Kakasi
perl -MText::Kakasi -e 'print $Text::Kakasi::VERSION' 2> /dev/null
echo ""
echo Encode
perl -MEncode -e 'print $Encode::VERSION' 2> /dev/null
echo ""
echo IO::Socket::SSL
perl -MIO::Socket::SSL -e 'print $IO::Socket::SSL::VERSION' 2> /dev/null
echo ""
echo Net::SSLeay
perl -MNet::SSLeay -e 'print $Net::SSLeay::VERSION' 2> /dev/null

かなり、足りない...

リリースノートを見るとcpanからBundle::POPFileバンドルによって、必要なすべてのモジュールをダウンロードできるとなっている。
とりあえずは、この方法でやってみた。

# perl -MCPAN -e shell
cpan> install Bundle::POPFile

しかし BerkeleyDB、File::Copy、File::Find、IO::Socket::SSL、Net::SSLeayが"make test"でエラーとなってインストールできない。

とりあえず、perl-IO-Socket-SSL、perl-Net-SSLeayはyumのリポジトリに存在するので、yumでインストールする。

# yum install perl-IO-Socket-SSL

perl-Net-SSLeayも依存関係で同時にインストールされた。

残るは、 BerkeleyDB、File::Copy、File::Findだが、そもそもこれらのBerkeleyDBは1.0.0では使っていないはずだ。
そして、File::Copy、File::Findは既にインストールされている。

ということは、バックエンドにMySQLを使うのであれば、もう使えるはずだ。

# yum install perl-DBD-MySQL

Mandrake向けだが、サービスとしてPOPFileを起動するための以下の英文ドキュメントを参考に作業。

Installing POPFile on Mandrake [POPFile Documentation Project]

# mkdir /usr/share/popfile/
# mkdir /var/lib/popfile
# mkdir /var/log/popfile
# cp *.gif *.pl *.png *.ico /usr/share/popfile/
# cp stopwords /usr/share/popfile/
# cp license /usr/share/popfile/
# cp v*.change /usr/share/popfile/
# chmod +x /usr/share/popfile/*.pl
# cp -Rf Classifier /usr/share/popfile/
# cp -Rf Classifier /usr/share/popfile/
# cp -Rf POPFile /usr/share/popfile/
# cp -Rf Proxy /usr/share/popfile/
# cp -Rf UI /usr/share/popfile/
# cp -Rf languages /usr/share/popfile/
# cp -Rf manual /usr/share/doc/popfile/
# cp -Rf skins /usr/share/popfile/
# cp -Rf Services /usr/share/popfile/ <-Webにはなかったが、無いとIMAPが動かなそうだ
# vi /usr/sbin/popfile-bayes <- Webの通りに編集
# vi /usr/sbin/popfile-insert <- Webの通りに編集
# vi /usr/sbin/popfile-pipe <- Webの通りに編集
# vi /usr/sbin/popfile <- Webの通りに編集
# chmod +x /usr/sbin/popfile*
# vi /etc/init.d/popfile
# chmod +x /etc/init.d/popfile
# /sbin/chkconfig --level 345 popfile on
# ln -s /etc/init.d/popfile /usr/sbin/popfile-service

これで、起動の準備は整ったはずだ。

MySQLを使うので、まず、MySQLにPOPFileのユーザを作成。

pfuserは実際はユーザ名、pfpasswordは実際はパスワード。

# mysql -u root -p
mysql> create database popfile;
mysql> grant all on popfile.* to pfuser identified by '********';
mysql> flush privileges;
mysql> quit

そして設定ファイルをWenページの通りに作成する。

# vi /var/lib/popfile/popfile.cfg
bayes_dbconnect dbi:mysql:database=popfile;host=localhost
bayes_dbuser pfuser
bayes_dbauth pfpassword

# /usr/sbin/popfile-service start

が、エラーがいくつか出る。

23950: bayes: 747: Attempting to connect to dbi:mysql:database=popfile;host=localhost (1)
23950: bayes: 753: Using SQLite library version
23950: wordmangle: 88: Failed to open stopwords file
20037: WARNING: Couldn't open POPFile packing list (/usr/share/popfile/popfile.pck) so cannot check configuration[0a]

popfile.pckについては、最初にソースを展開したディレクトリにあったものをコピーして対処。

$ sudo cp popfile.pck /usr/share/popfile/

"Failed to open stopwords file"は、ソースを見たところ、stopwordsの正しい置き場所は、環境変数POPFILE_USERとして指定した場所、すなわち今回は"/var/lib/popfile"のようだ。
まあ考えてみれば、置き場所としては当然こっちだ。

# mv /usr/share/popfile/stopwords /var/lib/popfile/

しかし今回はSQLiteは使用していないのに、ログにUsing SQLite library versionとあるのは不可解だ。

とりあえず動作テストをしてみて様子を見るが、一度登録したデータをうまく反映してくれないようだ。
また、頻繁にログにはエラーが出力され、またPOPFile自体が落ちてしまう。

DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3 at /Classifier/Bayes.pm line 1595.
DBD::mysql::st fetchrow_arrayref failed: fetch() without execute() at /Classifier/Bayes.pm line 1600.
DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
and matrix.bucketid = 2' at line 3 at /Classifier/Bayes.pm line 1615.
DBD::mysql::st fetchrow_arrayref failed: fetch() without execute() at /Classifier/Bayes.pm line 1619.

とりあえずMySQLを使うのはあきらめ、また英文のオリジナルドキュメントを読みながら、もう一度やり直すことにする。

トラックバック(1)

再度、英文のオリジナルドキュメントを読みながら、SQLiteを使い、もう一度や... 続きを読む

このブログ記事について

このページは、norが2008年2月14日 19:27に書いたブログ記事です。

ひとつ前のブログ記事は「CentOSのリポジトリを増やす」です。

次のブログ記事は「インストール: POPFIle 1.0.0(成功)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アーカイブ

ウェブページ

Powered by Movable Type 6.8.5