Hatena::ブログ(Diary)

ラシウラ このページをアンテナに追加 RSSフィード Twitter

2009-05-29

cygwin上にmecab&mecab-rubyをインストール

少し苦労したけど、以下の手順でcygwin上にインストール可能です。

mecabは現時点で最新の配布版0.98pre20.98pre30.98を使ってます

(5月31日に0.98pre3が出たようですが、下記のエラーや対策は同じでした)

(追記: 0.98対象に更新mecab-rubyのinstall方法を修正)

必要cygwinパッケージ

補足の修正を行う場合

  • automake
  • autoconf

mecabインストール

wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-0.98.tar.gz
tar zxf mecab-0.98.tar.gz
cd mecab-0.98pre3
./configure --with-charset=utf-8 CPPFLAGS=-DNOMINMAX LIBS=-liconv
make
make install

CPPFLAGとLIBSは、cygwin固有のビルドエラーへの対策で入れてます。以下は、そのエラーの解消法です。

補足1: CPPFLAG対策の不要化

src/common.h中の

#include <sstream>

#ifdef __CYGWIN__
#define _GLIBCXX_EXPORT_TEMPLATE
#endif

の部分を

#ifdef __CYGWIN__
#define _GLIBCXX_EXPORT_TEMPLATE
#endif
#include <sstream>

に修正する(sstreamの前で定義しないと無意味)

補足2: LIBS対策の不要化

configure.in中の

AC_CHECK_LIB(iconv,iconv_open)

の部分を

AC_CHECK_LIB(iconv,libiconv_open)
AC_CHECK_LIB(iconv,iconv_open)

に変更後、コマンドライン

libtoolize -cf
aclocal --force
autoreconf

を実行する(cygwinのlibiconvではiconv_openはマクロでlibiconv_openに置換されるようになってるため、そのシンボルで追加が必要)。


この二つの修正を行っていれば

./configure --with-charset=utf-8
make
make install

インストール可能になります


ipadicインストール

wget http://ncu.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf-8
make
make install

mecab-rubyインストール(gem利用)

wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-ruby-0.98.tar.gz
tar zxf mecab-ruby-0.98.tar.gz
cd mecab-ruby-0.98
gem build mecab-ruby.gemspec
gem install mecab-ruby-0.97.gem -- --with-opt-libs=/usr/local/lib

(gem installでは、--以降で、extconf.rbオプションを指定しています。)

付属test.rbが実行できれば成功です。

ruby -rubygems test.rb

gemを使わない場合

ruby extconf.rb
make
make install

アップグレード時の注意

新しいファイルビルドする前に、古いバージョンディレクトリ上で

make uninstall

しておき、上記のようにビルドします。

mecab-rubyでは、

gem uninstall mecab-ruby

で古いバージョンを消してからgem installします。

リソース

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/bellbind/20090529/1243615666
Connection: close