2006年11月20日

[SpamAssassin-JP 458]TextMeCabについて

** SpamAssassin メーリングリスト **
** 注意:このメールへの返信は SpamAssassin-jp へ行きます **
こんにちは。はじめまして。

最近、SpamAssassinの日本語対応化に尽力されているグループがある事を知りまし
た。
SpamAssassin日本語パッチを適用したいと思い、チャレンジしているのですが、
TextMeCabを

インストールする段階で、エラーが出てインストール出来ず困っています。

環境は、SuSE Enterprise Server 9 (X86_64)です。

滝澤さんのページからパッチを頂き、ドキュメントを参照させて頂いています。

mecab-0.93.tar.gzを、charset=utf8でconfigureしてインストールして
mecab-ipadic-2.7.0-20060707.tar.gzを、chardef.patchを当ててから
charset=utf8でconfigureしてインストールしました。
use MeCab; を使用した適当なテストスクリプトで、mecabの動作確認は行い
この時点では問題ありませんでした。

続けて、Text-MeCab-0.13をダウンロードして展開してインストールしました。
use Text::MeCab; を使用したテストスクリプトでText::MeCabのテストを行うと
下記のエラーが出て動きません。

perl: symbol lookup error:
/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi/auto/Text/MeCab/MeCab.so:

undefined symbol: mecab_new

SpamAssassin日本語パッチ版で、sa-learnを実行しても同じエラーが発生します。

MeCab.so自体は、下記の通りファイル自体は正常にインストールされています。

# ls -la
/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi/auto/Text/MeCab/
total 68
drwxr-xr-x 2 root root 128 Nov 17 10:56 .
drwxr-xr-x 4 root root 96 Nov 17 10:56 ..
-rw-r--r-- 1 root root 461 Nov 20 10:53 .packlist
-r--r--r-- 1 root root 0 Nov 17 10:56 MeCab.bs
-r-xr-xr-x 1 root root 61942 Nov 17 10:56 MeCab.so

INCパスは下記の通りです。MeCab.soはパスに入っています。
/usr/lib/perl5/5.8.3/x86_64-linux-thread-multi
/usr/lib/perl5/5.8.3
/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.3
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.3
/usr/lib/perl5/vendor_perl

perldocでのインストール確認では、下記の通りインストールされています。
Fri Nov 17 10:56:54 2006: "Module" Text::MeCab
"installed into: /usr/lib/perl5/site_perl/5.8.3"
"LINKTYPE: dynamic"
"VERSION: 0.13"
"EXE_FILES: "

MeCabのライブラリは、下記の通りインストールされています。
このパスが、ライブラリパスに登録されているのも確認致しました。

# ls -la /usr/local/lib/libmecab*
-rw-r--r-- 1 root root 2692802 /usr/local/lib/libmecab.a
-rwxr-xr-x 1 root root 853 /usr/local/lib/libmecab.la
lrwxrwxrwx 1 root root 17 /usr/local/lib/libmecab.so ->
libmecab.so.1.0.0
lrwxrwxrwx 1 root root 17 /usr/local/lib/libmecab.so.1 ->
libmecab.so.1.0.0
-rwxr-xr-x 1 root root 1497209 /usr/local/lib/libmecab.so.1.0.0

そのまま、SpamAssassin日本語パッチ済みのmaketestを行うと
下記のエラーが幾つか表示されます。

t/cidrs.....................plugin: failed to parse plugin (from @INC):
Can't load
'/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi/auto/Text/MeCab/MeCab.so'

for module Text::MeCab:
/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi/auto/Text/MeCab/MeCab.so:

undefined symbol: mecab_sparse_tonode at
/usr/lib/perl5/5.8.3/x86_64-linux-thread-multi/XSLoader.pm line 68.
at
/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi/Text/MeCab.pm
line 14
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi/Text/MeCab.pm
line 26.
Compilation failed in require at
../blib/lib/Mail/SpamAssassin/Plugin/Tokenizer/MeCab.pm line 45.
BEGIN failed--compilation aborted at
../blib/lib/Mail/SpamAssassin/Plugin/Tokenizer/MeCab.pm line 45.
Compilation failed in require at (eval 19) line 1.

plugin: failed to create instance of plugin
Mail::SpamAssassin::Plugin::Tokenizer::MeCab: Can't locate object method
"new" via package "Mail::SpamAssassin::Plugin::Tokenizer::MeCab" at
(eval 20) line 1.

自分でも調べているのですが、行き詰ってしまいました。
何か原因は考えられるでしょうか?

Text::MeCabのインストール時の記録を下記に引用致します。

# perl Makefile.PL
Path to mecab config? [/usr/local/bin/mecab-config]
detected mecab version 0.93
Using compiler flags '-I/usr/local/include -DMECAB_MAJOR_VERSION=0
-DMECAB_MINOR_VERSION=93'...
Using linker flags '-L/usr/local/lib -lmecab -lstdc++'...
Text::MeCab needs to know what encoding you built your dictionary with
to properly execute tests.

Encoding of your mecab dictionary? (shift_jis, euc-jp, utf8) [utf8]
Using utf8 as your dictionary encoding
Note (probably harmless): No library found for -lmecab
Writing Makefile for Text::MeCab

# make
cc -c -I/usr/local/include -DMECAB_MAJOR_VERSION=0
-DMECAB_MINOR_VERSION=93 -I src -O2 -fmessage-length=0 -Wall -Wall -pipe
-DVERSION=\"0.13\" -DXS_VERSION=\"0.13\" -fPIC
"-I/usr/lib/perl5/5.8.3/x86_64-linux-thread-multi/CORE" MeCab.c
Running Mkbootstrap for Text::MeCab ()
chmod 644 MeCab.bs
rm -f blib/arch/auto/Text/MeCab/MeCab.so
LD_RUN_PATH="/usr/lib64" cc -shared -L/usr/local/lib64 MeCab.o
-o blib/arch/auto/Text/MeCab/MeCab.so \
-lstdc++ \

chmod 755 blib/arch/auto/Text/MeCab/MeCab.so
cp MeCab.bs blib/arch/auto/Text/MeCab/MeCab.bs
chmod 644 blib/arch/auto/Text/MeCab/MeCab.bs
Manifying blib/man3/Text::MeCab::Node.3pm
Manifying blib/man3/Text::MeCab.3pm

# make install
Files found in blib/arch: installing files in blib/lib into architecture
dependent library tree
Writing
/usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi/auto/Text/MeCab/.packlist

Appending installation info to
/usr/lib/perl5/5.8.3/x86_64-linux-thread-multi/perllocal.pod
#

なにかアドバイスなど頂ければ助かります。
よろしくお願い致します。

_________________________________________________________________
メッセンジャーでファイルのやりとりができる
http://promotion.live.jp/messenger/share.htm

--
SpamAssassin メーリングリスト
http://mm.apache.jp/mailman/listinfo/spamassassin-jp

投稿者 xml-rpc : 2006年11月20日 12:42
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/49660
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。