Friday, December 12, 2014

Installing RMySQL on OS X "Yosemite"

Here are the instructions to install RMySQL on OS X "Yosemite":

  1. Download and install the MySQL community server for OS X. You will need a free Oracle account to complete the download. At the time of this blog post, I installed mysql-5.6.22-osx10.9-x86_64 via the DMG archive. By default MySQL will be installed in /usr/local/mysql-5.6.22-osx10.8-x86_64 (if you use a different version, look for an equivalently named directory under /usr/local).
  2. Download sources for the RMySQL package from CRAN. At the time of this blog post, I downloaded RMySQL_0.9-3.tar.gz.
  3. Open a Terminal window and run:
    export DYLD_LIBRARY_PATH=/usr/local/mysql-5.6.22-osx10.8-x86_64/lib:$DYLD_LIBRARY_PATH
    You may want to consider adding this line to .bashrc as well.
  4. In the same terminal window compile and install RMySQL using this command (in a single line):
    R CMD INSTALL --configure-args="--with-mysql-dir=/usr/local/mysql-5.6.22-osx10.8-x86_64 --with-mysql-inc=/usr/local/mysql-5.6.22-osx10.8-x86_64/include --with-mysql-lib=/usr/local/mysql-5.6.22-osx10.8-x86_64/lib" RMySQL_0.9-3.tar.gz
    If you installed a different version of MySQL or downloaded a different version of RMySQL, fix the command to reflect the correct directory names.
That should be it. RMySQL will build and, if everything went well, finish up with these messages:
** testing if installed package can be loaded
* DONE (RMySQL)
From the terminal window launch R as usual.

If you are using RStudio, and simply launch it from Spotlight or your Applications folder, and try to use RMySQL, you may see this error:
> library(RMySQL)
Loading required package: DBI
Error : .onLoad failed in loadNamespace() for 'RMySQL', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/RMySQL/libs/RMySQL.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/RMySQL/libs/RMySQL.so, 6): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/RMySQL/libs/RMySQL.so
  Reason: image not found
Error: package or namespace load failed for ‘RMySQL’
This is because the DYLD_LIBRARY_PATH environment variable is only set in Terminal windows. You have two options to use RStudio:

  1. Open a Terminal window and run
    export DYLD_LIBRARY_PATH=/usr/local/mysql-5.6.22-osx10.8-x86_64/lib:$DYLD_LIBRARY_PATH
    /Applications/RStudio.app/Contents/MacOS/RStudio &
  2. As root, add the "export ..." line to /etc/launchd.conf and restart your computer. This should make the DYLD_LIBRARY_PATH setting global and allow you to launch RStudio from Spotlight or your Applications folder.