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を使ったテキストマイニングの方法とかをこのブログで紹介していこうと思ってます。