ロードできない RMeCab を無理やりロードしてみた
RMeCab を使おうとしたらハマったのでメモを書き残しておきます。
今時 Snow Leopard を使ってる人なんていないと思いますが、
http://web.ias.tokushima-u.ac.jp/linguistik/snow.html から R-2.15.1 に対応するアーカイブをダウンロードしてインストールするとします。
$ wget http://web.ias.tokushima-u.ac.jp/linguistik/RMeCab_0.9905.tgz
$ R CMD install RMeCab_0.9905.tgz
* installing to library ‘/usr/local/Cellar/r/2.15.3/R.framework/Versions/2.15/Resources/library’
* installing *binary* package ‘RMeCab’ ...
* DONE (RMeCab)
パスを見て気付いた人もいると思いますが、R は Homebrew でインストールしたやつです。
インストール時に特別なオプションは付けていません。
sessionInfo とかは次のような感じです。
> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
> unlist(.Platform)
OS.type file.sep dynlib.ext GUI endian pkgType path.sep
"unix" "/" ".so" "X11" "little" "source" ":"
r_arch
""
っで、RMeCab をロードしようとすると次のようなエラーになったんです。
> library(RMeCab)
Error: package ‘RMeCab’ was built for universal-apple-darwin9.8.0
よくわからなかったので次のようなおまじないをしてみました。
> .Platform.bak <- .Platform
> .Platform$r_arch <- "x86_64"
> unlockBinding(".Platform", getNamespace("base"))
> assign(".Platform", .Platform, envir = getNamespace("base"))
すると何事もなかったようにロードできちゃいました。
> library(RMeCab)
> unlist(RMeCabC("すもももももももものうち"))
名詞 助詞 名詞 助詞 名詞 助詞 名詞
"すもも" "も" "もも" "も" "もも" "の" "うち"
ロードした後は .Platform の値を元に戻しておくと良いかもしれないですね。
> assign(".Platform", .Platform.bak, envir = getNamespace("base"))
> lockBinding(".Platform", getNamespace("base"))
仕組みについては全然理解できてないのでご利用は自己責任でお願いします。