libmecab.so.1: cannot open shared object fileとか言われた

mecab-rubyを手でインストールした時の話。


mecab-ruby-0.98.tar.gz をダウンロードして

% tar zxf mecab-ruby-0.98.tar.gz
% cd mecab-ruby-0.98
% ruby extconf.rb
% make
% sudo make install

インストールできたので、mecab-rubyについてたtest.rbを実行してみたら、

% ruby test.rb
/home/XXXX/local/lib/ruby/site_ruby/1.8/i686-linux/MeCab.so: libmecab.so.1: cannot open shared object file: No such file or directory - /home/XXXX/local/lib/ruby/site_ruby/1.8/i686-linux/MeCab.so (LoadError)
        from test.rb:3

みたいに言われた。

ライブラリは入ったはずなので確認したら、やっぱり/usr/local/libにインストールされていた。

% find /usr/ -name 'lib*mecab*'
/usr/local/lib/libmecab.la
/usr/local/lib/libmecab.so
/usr/local/lib/libmecab.so.1
/usr/local/lib/libmecab.so.1.0.0
/usr/local/lib/libmecab.a

何でかなーと思ってふとldconfigしてみると、

% ldconfig -p|grep -i '/usr/local/lib'
(出力なし)

/usr/local/libを見ていないことがわかったので、/etc/ld.so.confに

/usr/local/lib

を追加して

# ldconfig

すると

% ldconfig -p|grep -i '/usr/local/lib'
        libmecab.so.1 (libc6) => /usr/local/lib/libmecab.so.1
        libmecab.so (libc6) => /usr/local/lib/libmecab.so

ちゃんと更新された。


再度test.rbを実行すると、

% ruby test.rb
:

いろいろ出力されて、うまくいった。


めでたしめでたし。