mecabをRPMでインストール

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のところが同じだったので、同じオプションを指定してやったら問題なし。インストールも大丈夫だった。

なんというか、メモリが少ないのはシビアだけど、やり方はわかったので、しばらくこれで使おう。

blog/2009/04/mecabをrpmでインストール.txt · 最終更新: 2009/04/29 13:10 by zushi
CC Attribution-Noncommercial-Share Alike 3.0 Unported www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0