あまつぶ

10.26 【XでNamazu検索(前編)】

 「そういえば前にあまつぶで書いたような……」ということを調べたい時、たいてい、Googleで「あまつぶ」と(調べたいキーワード)で検索している。この方法は結構使えるのだけど、インデックスの更新頻度の関係で最近書いたところがヒットしなかったり、あるいはうちとは関係ないところが引っかかってしまったりしてなかなかうまくいかないこともある。また、もちろん、インターネットに接続しているときでないと使用できない。
 インターネットに接続していないと検索できないということに関しては、常時接続になったことで解決したが、他の問題は依然としてある。それに、うちのページを検索したいだけなのに検索エンジンを使うのもどうだろうという気もする。そんなわけで、全文検索システム Namazuを利用して検索システムを構築してみることにした。

 Namazuといえば、以前、Windows版をインストールして試してみたことがあるが、Mac OS Xで動かすのは初めてだ。まあ、しかし、そこはUnixであるMac OS X。きっと動くに違いない。
 まずは、必要なものを入手してくる。上記のNamazuのページのチュートリアルを参照し、Namazu本体や、他に必要なファイルを入手する。分かち書きには、Kakasiを使用することにした(前にWindows版を利用したときもそうしたため)。ダウンロードしたファイルは、すべて「~/work」に置いた。別に場所はどこでもいいのだけど、うちでは、なにかこういうのをインストールしたりする場合、いつもこのフォルダを使用しているのだ。
 Namazuをインストール(ビルド)するより前に、Kakasi、nkf、(Namazuのバイナリに付属している)File::MMagicをインストールしておく必要がある。まずはそこからはじめる。流れとしては、Kakasiインストール→Text::Kakasiインストール→nkfインストール→NKFインストール→File::MMagicインストール→Namazuインストールという感じで行った。

 まず、Kakasiのインストールから。これを書いている時点での最新バージョンは2.3.4。

% tar -xzf kakasi-2.3.4.tar.gz
% cd kakasi-2.3.4
% ./configure

 このままmakeするとエラー(ld: -undefined error must be used when -twolevel_namespace is in effect)が起こるので、Mac OS X 10.1 Two-Level Namespace Release Notesを参考に、libtoolの200行にある「allow_undefined_flag="-undefined suppress"」を「allow_undefined_flag=""」に変更してからmakeする。(※ configureの際に、「./configure --host=powerpc-apple-bsd」とすればエラーなくとおるそうだ)

% make
% sudo make install
(rootのパスワード入力)

 これで、/usr/local/bin/にkakasi、/usr/local/include/にヘッダファイル、/usr/local/share/kakasi/に辞書がインストールされる。インストールの確認は、/usr/local/bin/kakasi -vで、バージョンなどが表示されるかどうかを試す。

 次に、Text::Kakasiをインストールする。これを書いている時点での最新バージョンは1.04。

% tar -xzf Text-Kakasi-1.04.tar.gz
% cd Text-Kakasi-1.04
% perl Makefile.PL
% make
% sudo make install
(rootのパスワード入力)

 perl Makefile.PLでMakefileができるので、あとは、ビルドしてインストール。これで、Text::Kakasiのインストールは完了。

 次に、nkf 1.71をインストールする。上記チュートリアルによると、新しいバージョンには全角空白の取り扱いに問題があるということなので、1.71を利用する。nkfは、そのまま展開してしまうとフォルダができないので、先にnkf171フォルダを作成し、そこに移動してから展開する。また、.sharは、実行権限をつけて実行するだけで展開される。

% cd nkf171
% chmod +x nkf171.shar
% ./nkf171.shar
% mv NKF NKF_f
% make
% sudo cp nkf /usr/local/bin
(rootのパスワード入力)

 展開するとNKFというフォルダができるが、これがあるとnkfのビルドができない(大文字/小文字の区別がされないので)。これは都合が悪いので、NKFを、例えばNKF_fなどにリネームしておく。できたnkfは、/usr/local/binへコピーする。

 次に、NKFをインストールする。NKFは、先ほどできたNKFフォルダの中にある。

% cd NKF_f
% perl Makefile.PL
% make
% sudo make install
(rootのパスワード入力)

 さて、いよいよNamazuのインストールだが、その前に、/usr/local/binにパスが通っているかどうかを確認しておく。%echo $pathで、/usr/local/binが表示されない場合は、~/.cshrcを編集(あるいは作成)して、「set path = ($path /usr/local/bin)」を追加しておく。追加したら、Terminalを一度終了し、起動し直すか、新しいTerminalウィンドウを開く。

% tar -xzf namazu-2.0.12.tar.gz
% cd namazu-2.0.12

 Namazuのバイナリを展開したら、先に、File-MMagicフォルダにある、File::MMagicからビルドする。

% cd File-MMagic
% perl Makefile.PL
% make
% sudo make install
(rootのパスワード入力)

 これでいよいよ、Namazuのビルド(の前にconfigure)ができる。

% cd ..
./configure

ここで、kakasiが分かち書きのプロセッサとして認識されているかどうかを確認しておく。
 また、このままmakeすると2重定義のエラーが発生してしまうため、lib/getopt.cとlib/getopt.hを一部編集する。具体的には、これらのソース内で使用されているoptget、opterr、optind、optoptをそれぞれ別の名前に変更する(optget_tとか)。あるいは、これらの定義を削除するという方法もあると思う。それができたら、ビルドし、インストール。(※ この部分も、Mac OS X 10.1以降であれば、「./configure --host=powerpc-apple-bsd」とするだけで問題ないそうだ)

% make
% sudo make install
(rootのパスワード入力)

 エラーなく終了すれば、インストールは完了。/usr/local/bin/にmknmz、namazuなどの実行ファイル、/usr/local/libexec/にnamazu.cgi、/usr/local/etc/namazu/にmknmzrc、namazurcのサンプル、/usr/local/share/namazu/にドキュメントやフィルタなど、/usr/local/man/man1/にnamazu、mknmzのマニュアルがインストールされる。
 動作テストとして、mknmz -vを試してみる。

 ここまででインストール作業は終了。次回は、mknmzでインデックス作成、namazuで検索が行えることを確認する。さらに、namazu.cgiを利用して、cgiによる検索も行ってみる。

October 20, 2002 ↑ 2002 index → November 9, 2002