Does it taste good?

「そんなことも知らないの?」って言わないでほしい。

Macでinstall.packagesでRMeCabをインストールしてそのまま使うとRStudioが爆死する(タイトル)

※数日前のできごとなのでエラーの詳細とか曖昧です。すみません…

先日オフラインのWindows環境にRMeCabを導入する話を書きました。

kyyonko.hatenablog.com

ただ、オンライン環境(普段使ってる方)のMacの方にRMeCabを入れてなかった(本末転倒じゃん)ということをすっかり忘れていたので、入れました。

http://rmecab.jp/wiki/index.php?RMeCab

こちらを参考にして、

install.packages("RMeCab", repos = "http://rmecab.jp/R", type = "source")

インストールが完了してRMeCabを入れて実行すると、懐かしの爆弾が出てRStudioが落ちるという事案が発生。

ターミナルの方でRを立ち上げてやってみると、うろ覚えだが下リンク先の質問と同じようなエラーが。

rmecab.jp

‘memory not mapped’

ググっても↑のリンクくらいしか有用なヒントは見当たらず、結局結論としては先程の質問に対する一番下のコメントが解決策であった。

Macには/usr/lib/にlibmecab.dylibがあり、これがリンクされてしまうようです。

ls -l /usr/lib/libmecab*
-rwxr-xr-x 1 root wheel 2536912 4 29 2017 /usr/lib/libmecab.1.0.0.dylib
lrwxr-xr-x 1 root wheel 20 4 28 2017 /usr/lib/libmecab.dylib -> libmecab.1.0.0.dylib
-rwxr-xr-x 1 root wheel 6302048 4 29 2017 /usr/lib/libmecabra.dylib

export LD_LIBRARY_PATH=/usr/local/lib
としてからRを起動しても同じでした。

http://rmecab.jp/R/にあるソースコードをダウンロードし、RMeCab/src/MakevarsのMECABの行に-L/usr/local/libを加えて、

> install.packages(“RMeCab”, repos = NULL, type = “source”)

としてローカルディレクトリからインストールすると、RMeCabCが正常に動きました。

とのこと。たしかにls -l /usr/lib/libmecab*したらそうなるな…ただ

http://rmecab.jp/R/にあるソースコードをダウンロード

とあるがここのソースコードがどこにあるのかわからない…

とりあえず石田先生のgithubにレポジトリがあるのでここを見てみる。

https://github.com/IshidaMotohiro/RMeCab

件の/src/Makevars にはすでに-L/usr/local/libが加えられているので、とくに自分で追記しなくてもいいらしい。

https://github.com/IshidaMotohiro/RMeCab/blob/master/src/Makevars

これをgit cloneしてきて作業ディレクトリで

install.packages("RMeCab", repos = NULL, type = "source")

したら正常に動いた。なんだったんだろう…?

ともあれ、無事にRMeCab入ったのでRMeCabを使ってもRStudioは落ちないです。よかったね!

> library(RMeCab)
> res <- RMeCabC("すもももももももものうち")
> unlist(res)
    名詞     助詞     名詞     助詞     名詞     助詞     名詞 
"すもも"     "も"   "もも"     "も"   "もも"     "の"   "うち"