DokuWikiの日本語対応を読むと、dokuwikiの日本語検索がちゃんと動くようにするためには、mecabが必要らしい。CentOS 5のリポジトリにはmecabのパッケージはないようなので、ソースから入れるか、どこかからRPMを拾ってくるかになるけれど、やはりソースから入れるよりRPMで入れる方が、後でインストールしたものの管理がやりやすいかなと思ったので、RPMでがんばって入れてみることにした。
とりあえず、同じRedHat系のFedoraも含めてRPMがないかどうか、RPM Searchとかで探してみたら、現時点で最新のFedora 10用のパッケージがあることを確認。CentOS 5には野良RPMもなさそうなので、FedoraのSRPMから作ることにする。他にもいろいろ検索してみた結果、どうやらmecabを使うためには、mecabとmecab-ipadicのパッケージが必要らしいので、まずはmecab本体のSRPMをミラーから拾ってきて、
$ rpm -qlp mecab-0.97-3.fc10.src.rpm
で中身をチェック。ソースファイルとSPECファイルしか含まれていない。
$ rpm2cpio mecab-0.97-3.fc10.src.rpm | cpio -i mecab.spec
で、SPECファイルだけ展開して、中身を確認してみたところ、特に変わった処理はしてない様子。これならそのままビルドできそう。なので、
$ rpmbuild --rebuild --define 'dist .el5' mecab-0.97-3.fc10.src.rpm
として、パッケージ名に.el5がつくようにしてビルドを開始してみる。すると、いきなりSSH接続が切れた。なんだこりゃ。
たまたまもう1つSSH接続を取ってて、そっちは生きてたのでtopやらpsやらでプロセスをチェックしたら、プロセス数がえらい減ってる。というか、sshdまで死んでるじゃないか!落ち着いてsshdを再起動して、もう一度接続取り直して、片方の端末でtop起動しながらもう一度ビルドしてみる…やっぱり落ちた。
おかしいなーと思って、topながめながら何度かビルド試して、ようやくメモリ不足だってことに気がついた。VPSシルバーは最大512MBまでしかメモリが使えず、ちょっとでもオーバーすると、即座にプロセスがkillされるらしい。なんてこった。これじゃビルドできないじゃんかー。いろいろ他のプロセスを止めてみたけど、やっぱりメモリ不足になる。
でも、これだけのために上位プランにアップデートするのもあれだし、なんとかならんのかと思ってtopをながめてたら、なんかやけにcc1plusのプロセスが走ってるじゃありませんか。おかしいと思って、失敗したビルドの出力見たら、
make -j8
とある。SPECファイルを調べてみると、
%{__make} %{?_smp_mflags}
とあって、どこかで _smp_mflags という変数に -j8 が定義されてて、そのせいで8つ同時にコンパイルが走ってたらしい。そりゃメモリ食うよ。そこで
$ rpmbuild --rebuild --define 'dist .el5' --define '_smp_mflags -j1' mecab-0.97-3.fc10.src.rpm
として、コンパイルの同時実行を1つにしてやってみたら、うまくいった。mecab-ipadicのパッケージの方も、makeのところが同じだったので、同じオプションを指定してやったら問題なし。インストールも大丈夫だった。
なんというか、メモリが少ないのはシビアだけど、やり方はわかったので、しばらくこれで使おう。