Clojure
R

rjavaのインストールメモ&rincanterの設定(OSX,Ubuntu)

More than 5 years have passed since last update.

=======

OSX10.7 lion編

rincanterを使用しようとして苦労したので設定をメモ

まずRはhomebrewからインストールしたものを使う前提とします。

jdkのインストール

jdkが必要なのでインストールするのですが、デベロッパサイトからのダウンロードが必要です。デベロッパー登録が必要なので登録しましょうデベロッパー登録したら
デベロッパサイト
https://developer.apple.com/jp/resources/
へ行きMac OS X DownloadsからJava for OS X Developer Packageの最新版をダウンロードしてインストールします。
すでにjreをインストールしていた場合、jdkを使用する必要があるので
ユーティリティからJava Preferenceを起動し優先する順位を最初にします。

Rの設定

次にRにjvm関連の変更を再設定するためにターミナルを立ち上げ

$ R CMD javareconf 

と入力しますrootで実行せよとなっていますがhomebrewではユーザ権限でOKです。
Rを起動しrjavaパッケージをインストールします。

install.packages('rJava')

confiureが走りコンパイルが始まりますエラーが出ずインストールが終了すればOK
コンパイルが失敗する場合、
R_HOMEの設定をする
homebrewでは不要ですがPackage版では必要なようです

jdkがインストールされていないとjnilibがコンパイルできずjni.hが見つからないというエラーがでます。

rincanterのインストール

これでrincanterのインストール準備が完了します。
Clojureへのインストールはleiningenから行うことにすると
project.cljはこんな感じ
incanterとrincanterは最新版をclojars.orgで検索して最新版を指定します。

project.clj
(defproject rincantersamp "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [incanter "1.3.0"]
                 [org.clojars.guv/rincanter "1.1.0"]]
  :dev-dependencies [[swank-clojure "1.4.1"]])

ここからはad-hocなやり方ですが、
lein deps後rjavaのラブラリをlibsコピーします。
対象は

/usr/local/Cellar/r/{Rのバージョン}/R.framework/Resouces/library/rJava/jri
のJRI.jar,REngine.jar,JRIEngine.jar
をプロジェクトのlibsへコピーします。
このままだとlein swank時に実行ライブラリが見つからないと怒られるので
libjri.jnilibをproject.cljと同一のディレクトリへコピーします
そして

$ lein swank

で実行

Ubuntu編

手順は、ほぼOSX編と同じですライブラリ関連とパッケージマネージャーからJDKをインストールすることぐらいが違いとなります。

RとJDKのインストール

パッケージマネージャからRとJDKをインストールする。

共有ライブラリの設定(環境変数)

libjvm.soが無いと怒られるので、ありかの指定をする
.profile または.bashrc等に環境変数の設定をする

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/jvm/default-java/jre/lib/i386/jamvm

を追加

Rの設定

OSX編と同様に
Rにjvm関連の変更を再設定するためにターミナルを立ち上げ

$ R CMD javareconf 

と入力します
Rを起動しrjavaパッケージをインストールします。

install.packages('rJava')

confiureが走りコンパイルが始まりますエラーが出ずインストールが終了すればOK

rincanterのインストール

lein new {project}
でプロジェクトを作成後OSX編と同様に
project.cljを作り

project.clj
(defproject rincantersamp "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [incanter "1.3.0"]
                 [org.clojars.guv/rincanter "1.1.0"]]
  :dev-dependencies [[swank-clojure "1.4.1"]])

ターミナルから

lein deps

を実行します

rJava関連のjarをコピー

lein deps後rjavaのラブラリをlibsコピーします。

rJava関連のjarファイルは

~/R/i686-pc-linux-gnu-library/2.13/rJava/jri

以下にあるので、このディレクトリのJRI.jar, JRIEngine.jar, REngine.jar
をleinで作成したプロジェクトのlibへコピー。

lein swankのための設定

このままではlibjri.soを見つけられないと怒られるので、
leinで作成したプロジェクトのディレクトリへ

~/R/i686-pc-linux-gnu-library/2.13/rJava/jri

から libjri.soをコピーします

そして

$ lein swank

で実行