教育社会学の勉強・備忘録

教育社会学のお勉強メモ。Macユーザーのための記事もたまに書きます。

RにRMeCabをインストールしてパッケージをロードしようとするとエラーが出る

環境

  • OSのバージョン:OSX 10.7.5 (Lion)
  • Rのバージョン:R64 2.15.2
  • RMeCabのバージョン:0.996 (RMeCab_0.99600.tgz for mecab_0.994 を用いてインストール)
  • MeCabのバージョン:0.994

エラーの内容

パッケージマネージャからRMeCabをロードしようとすると以下のようなエラーが出て起動することができませんでした。

 エラー:  関数 "dlopen" を見つけることができませんでした 
* installing *binary* package ‘RMeCab’ ...
* DONE (RMeCab)
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
   共有ライブラリ '~/Library/R/2.15/library/RMeCab/libs/x86_64/RMeCab.so' を読み込めません: 
  dlopen(~/Library/R/2.15/library/RMeCab/libs/x86_64/RMeCab.so, 6): Library not loaded: /usr/local/lib/libmecab.2.dylib
  Referenced from: ~/Library/R/2.15/library/RMeCab/libs/x86_64/RMeCab.so
  Reason: image not found 
 エラー:  '‘RMeCab’' に対するパッケージもしくは名前空間のロードが失敗しました 

エラー内容から察するに、RMeCab.soというライブラリを読み込む際に必要な別のライブラリlibmecab.2.dylibが見つからない、ということなのかと予想します。

解決方法

(ターミナル.appを開いて)以下のコマンドで。

$ sudo ln -s /opt/local/lib/libmecab.2.dylib /usr/local/lib/libmecab.2.dylib

どうやってこの方法を知ったか

「libmecab.2.dylib」とググったら出てきた以下のサイトを参考にしました:Mac OS X 10.6.8 -> 10.7.3 アップグレードメモ(感想、mecab、libsvm周り) — NAL’s blog @ 琉球大学情報工学科

/usr/local/lib/libmecab.2.dylibというファイルにアクセスされたときに/opt/local/lib/libmecab.2.dylibにバイパスされるようにしてやれば良い、ということですね。lnコマンドについては「ln コマンド」などでググってみてください。

/usr/optの意味とかちゃんとわかってれば一瞬で解決できるんでしょうね、こういうの。

Filesystem Hierarchy Standard - Wikipedia という概念があるそうなので、この辺見るとちょっと勉強になるかもしれませんが、/opt/local/lib/ のファイルをリンクすればいい、なんて思いつかないよなぁ…

ちなみにRMeCabを使ったテキストマイニングの方法とかをこのブログで紹介していこうと思ってます。