Solaris 10 に MeCab と Senna と MySQL をインストールする …… 失敗
まず,MeCab のインストール.
MeCab 0.8.1 と共存したいので,/usr/local/mecab/0.9 にインストールすることにします.
- MeCab 0.95
$ tar -zxvf mecab-0.95.tar.gz
$ cd mecab-0.95
$ ./configure --prefix=/usr/local/mecab/0.9
$ make
# make install
- ipadic 2.7.0
$ tar -zxvf mecab-ipadic-2.7.0-20060707.tar.gz
$ cd mecab-ipadic-2.7.0-20060707
$ ./configure --prefix=/usr/local/mecab/0.9
$ make
# make install
ここで MeCab にパスを通しておく
$ export PATH=${PATH}:/usr/local/mecab/0.9/bin
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/mecab/0.9/lib
$ export LD_RUN_PATH=${LD_LIBRARY_PATH}
次に Senna のインストール.こちらは /usr/local/senna にインストールします.
- Senna 1.0.2
$ tar -zxvf senna-1.0.2.tar.gz
$ cd senna-1.0.2
$ ./configure --prefix=/usr/local/senna
$ make INCLUDES=-I/usr/local/mecab/0.9/include
とここで,以下のエラーが出ました.
store.c: In function `sen_fse_open':
store.c:75: error: `UINT_MAX' undeclared (first use in this function)
store.c:75: error: (Each undeclared identifier is reported only once
store.c:75: error: for each function it appears in.)
make[2]: *** [store.lo] Error 1
make[2]: Leaving directory `/home/suna/workspace/src/senna-1.0.2/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/suna/workspace/src/senna-1.0.2'
make: *** [all] Error 2
どうも UINT_MAX が定義されていないようです.とりあえず,lib/store.c に以下のパッチを当てました.
#include <limits.h> を付け加えただけです.
--- store.c-orig 2007-03-14 15:48:35.000000000 +0900
+++ store.c 2007-03-15 21:57:30.308187817 +0900
@@ -19,6 +19,7 @@
#include "inv.h"
#include "store.h"
#include <string.h>
+#include <limits.h>
/* fixed sized elements */
もう一度 make します.
$ make INCLUDES=-I/usr/local/mecab/0.9/include
# make install
以下のような warning がたくさん出ましたが,とりあえず make が終了しました.
../config.h:86:1: warning: "_FILE_OFFSET_BITS" redefined
- MySQL 4.1.22
$ tar -zxvf mysql-4.1.22.tar.gz
$ cd mysql-4.1.22
ここで Senna から提供されている 4.1.20 用のパッチを当てようとしたのですが,2ind パッチでうまく当たらないファイルがあった (sql/item.h) ので 4.1.22 用のパッチを作りました.ついでに 2ind でない方のパッチも 4.1.22 用に新しくしました.
o mysql-4.1.22.senna.diff
o mysql-4.1.22.senna.2ind.diff
$ patch -p1 < ../mysql-4.1.22.senna.diff
$ patch -p1 < ../mysql-4.1.22.senna.2ind.diff (2ind パッチを当てる場合)
configure を再生成します.
senna に含まれるドキュメント (doc/INSTALL.JA) には
bison 1.75, autoconf 2.59, automake 1.8(aclocal 1.8)以上が必要です
のような記載がありますが,実際はこれらに加えて,libtool も必要です.
$ libtoolize -c -f
$ aclocal
$ autoheader
$ automake -c -a -i
$ autoconf
$ touch sql/sql_yacc.yy
次に configure をします.
configure の際には,--with-senna と --with-mecab をオプションに追加します.
$ ./configure --prefix=/usr/local/mysql \
--with-extra-charsets=all \
--without-readline \
--enable-assembler \
--with-low-memory \
--with-senna=/usr/local/senna \
--with-mecab=/usr/local/mecab/0.9
$ make
# make install
ちなみに,MySQL バインディングは Tritonn という別プロジェクトになったみたいです.
MySQL 5.0.36/5.0.37 の場合は Tritonn からパッチがリリースされています.
- Tritonnプロジェクト ~ MySQL+Sennaによる全文検索 ~ - Tritonnプロジェクト
http://qwik.jp/tritonn/
とりあえず,インストールはこれで完了です.
動作確認はまた後日.
- 追記
うまくいったと思ったら,MySQL の make でエラーが出てました.
sql_yacc.cc: In function `int yyparse(void*)':
sql_yacc.cc:22272: error: expected primary-expression before "__attribute__"
sql_yacc.cc:22272: error: expected `;' before "__attribute__"
うーむ.これについてもまた後日調べるとします.
関連記事:
[2007-04-25-1] MySQL 4.1.22 用の Tritonn パッチをテストしてみる