RMySQLのインストールに失敗する件
64bit MacOSX(Marvericks)に64bitのR入れて
> install.packages('RMySQL')
これをすると以下のエラーに見舞われた。
installing to /usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library/RMySQL/libs ** R ** inst ** preparing package for lazy loading Creating a generic function for ‘format’ from package ‘base’ in package ‘RMySQL’ Creating a generic function for ‘print’ from package ‘base’ in package ‘RMySQL’ ** help *** installing help indices ** building package indices ** installing vignettes ** testing if installed package can be loaded Error : .onLoad failed in loadNamespace() for 'RMySQL', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: 共有ライブラリ '/usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library/RMySQL/libs/RMySQL.so' を読み込めません: dlopen(/usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library/RMySQL/libs/RMySQL.so, 6): Symbol not found: _mysql_affected_rows Referenced from: /usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library/RMySQL/libs/RMySQL.so Expected in: flat namespace in /usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library/RMySQL/libs/RMySQL.so エラー: ロードに失敗しました 実行が停止されました ERROR: loading failed * removing ‘/usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library/RMySQL’
対処法として、cranのサイトから直接RMySQLをダウンロードしたソースを使ったらうまくいきました。
以下のサイトから最新のRMySQLのソースをダウンロードしましょう。
http://cran.r-project.org/bin/macosx/contrib/
RMySQLのインストールの下準備に$MYSQL_HOMEを設定します。~/.zshrc (.bashrc)などにいれといてもいいでしょう。
% export $MYSQL_HOME=/usr/local/opt/mysql
(ちなみにMySQLのインストールにはbrewを使っています。 "/usr/local/opt/mysql"はmysqlのhomeディレクトリを向くシンボリックリンクになっているので、バージョン番号が入った絶対パスなど使わず、そちらを利用しましょう。)
上記RMySQL〜〜.tgzを保存した場所で以下を実行
% R CMD INSTALL --configure-args="--with-mysql-dir=$MYSQL_HOME --with-mysql-inc=$MYSQL_HOME/include --with-mysql-lib=$MYSQL_HOME/lib" RMySQL_0.9-3.tgz
* installing to library ‘/usr/local/Cellar/r/3.0.2/R.framework/Versions/3.0/Resources/library’ * installing *binary* package ‘RMySQL’ ... * DONE (RMySQL)
このように出力されて成功しました。
install.packages('RMySQL')でダウンロードしてくるソースとは相性がよろしくなかったようです。