Linux ユーザーのための GETA 第3版インストール方法

汎用連想計算エンジン(GETA) は、大量のデータを高速に処理可能な高性能連想検索エンジンである。これを BSD 風のライセンスで自由に使わせてくれている国立情報学研究所は太っ腹なのだが、どうも私にはインストールが敷居が高いように感じられた。最近、最新版である GETA 第3版の作者である西岡真吾特任教授と知己を得たので、突撃インタービューを行い、インストール方法を教わるという幸せな体験をした。

GETA は現在 FreeBSD / Linux / SolarisUNIX 風 OS で動作可能である。MacOSX は?というと今のところはうまくコンパイルできないらしい。私が Linux ユーザーなので、今回のエントリでは主に Linux にインストールする方法を中心に考えてみる。

私がインストールの成功を確認した環境は、"Linux CentOS 4(Linux 2.6.9)" と "Debian GNU/Linux etch(Linux 2.6.18)" である。

汎用連想計算エンジン(GETA) のホームページから GETA 第3版 geta32u-release.tar.gz (2007/03/29)をダウンロードする。適当なディレクトリ $GETASRC でこの tar ball を解凍する。インストール方法は $GETASRC/INSTALL.TXT に書いてあるが、基本的に西岡教授のメインの開発環境である FreeBSD 向けなため一部に注意が必要である。それに留意しながら以下のような操作を行う。

% cd $GETASRC
% su
% TMPDIR=/tmp; export TMPDIR;
% GETAROOT=/usr/local/geta; export GETAROOT
$ mkdir $GETAROOT
$ CFLAGS="-fPIC -g -Wall" ./configure --prefix=$GETAROOT --with-dlcsche --with-gmake
$ make includes
$ make
$ make install

1. su (root になる)

/usr/local/geta 辺りにインストールするなら、書き込み権限の関係上 root になる必要があるだろう。そうでなければ root である必要はない。

2. TMPDIR=/tmp; export TMPDIR; (テンポラリファイル用ディレクトリの設定)

ときに巨大なテンポラリファイルが作られることがあるので、容量に余裕があるパーティションにマウントしているディレクトリを選ぼう。設定しないと /tmp がテンポラリファイル用のディレクトリになるらしい。

3. GETAROOT=/usr/local/geta; export GETAROOT (GETA システムのベースディレクトリの設定)

GETAROOT は必須環境変数GETA システムのインストール先を指定する。

4. CFLAGS="-fPIC -g -Wall" ./configure --prefix=$GETAROOT --with-dlcsche --with-gmake (Makefile 生成)

  1. CFLAGS は gcc へのコンパイルオプション。
  2. GETAROOT は --prefix オプションで渡す。
  3. --with-dlcsche: 西岡教授から「それは、あるモジュールのダイナミックリンクが○×△!%〜」と説明していただいたのだが途中から理解不能に陥ったので、とりあえずつけたほうがいいらしい、とだけ述べておく。
  4. --with-gmake: Linux ユーザーは重大注意。西岡教授にとって make はあくまでも BSD make であるからだ。Linux で普通に使う GNU make の場合は、明示的に --with-gmake と指定しなければならない。

5. make includes (ヘッダファイルの生成)

なんでこんなことをしているんだろう?と一番不思議に思ったのがここだ。これはヘッダファイル(*.h)を自動生成して、$GETAROOT/include/geta/* に展開する。西岡教授によれば、BSD/Linux/Solaris とさまざまなプラットフォームに対応するための措置であり、ここでプラットフォームごとにカスタマイズしてヘッダファイルを生成するということらしい。いろいろ細かいご苦労があるようだ。

6. make

コンパイル

7. make install

$GETAROOT への実行ファイル等のインストール。

これでインストールは終わり。make test としてテストもできるが、これは形態素エンジン ChaSenPerl が正しくインストールされていることが前提である。いまどき Perl のないLinux システムは考えられないが、ChaSen はインストールする必要がある。

・・・とテストをやってみたが、どうも失敗してしまう・・・。たぶんシステムはきちんとインストールできているは思うのだが。環境変数の問題かな?とりあえず今日は力尽きたのでここまで。