R言語の外部インストールがRLinkで使えるように設定する
RLinkは,Wolfram言語とR言語の間のシームレスな交信を簡単にするもので,特にR言語のrJavaパッケージとJRIのネイティブライブラリに依存する.RLinkは予め構築されたJRIライブラリをさまざまな過去のWindowsとmacOSのR言語バージョン用にバンドルすることによって,箱から出してすぐに使える便利さを提供するが,確実に接続できるようにするために追加のステップが必要となることもある.
このテクニカルドキュメントは,デフォルトのパラメータでInstallR関数を呼び出すときに結果がうまくいかないという問題が起ることに対処することを目的として書かれている.そのような問題は,Linuxシステムで起こりやすく,他のプラットフォームでもたまに起る.特に事前構築されたJRIライブラリがまだRLinkに統合されていないより新しいR言語バージョンで起こりやすい.
この設定プロセスは通常,個々のRのインストールに対して一度だけ行わなければならないものである.一旦完了すると,R言語とWolfram言語の接続は強固なままである.このガイドの説明に従うと,ユーザは選んだR配布をシームレスにRLinkに統合することができる.
必要条件
R
いずれかのバージョンのRがすでにインストールされていなければならない.複数のRのバージョンが韻酢っとオールされていることは問題ではないが,その場合はこのドキュメントで説明されるように,設定の仕方が少し異なる.
Java Development Kit (JDK)
RをRLinkで使えるように設定するためには,ある程度新しいバージョンのJava/Java Development Kit (JDK)がインストールされていなければならない.JDK 11以降のバージョンが推奨される.
JDKをダウンロードしてインストールする.後で必要となるので,どのディレクトリにインストールしたかの記録を取っておく.
macOS
AzulのJLKが一つのお勧めオプションである.
/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
Windows
AzulのJLKが一つのお勧めオプションである.
C:\Program Files\Zulu\zulu-17
Linux
厳密なインストールの過程は,JDKの種類と使用しているLinuxのフレーバーによる.以下は,OpenJDK 17とCentOS Linuxを使った例である:
sudo yum install java-17-openjdk-devel
Debianベースの配布では,コマンドは以下と似たものになるかもしれない:
sudo apt install -y openjdk-17-jdk
/usr/lib/jvm/java-17-openjdk
構築と開発のツール
macOS
macOSでは,特定のXcodeでApple Developer Toolsをインストールする必要がある場合もある.まずは以下の簡単なメソッドを試し,それがうまくいかない場合にのみインストールすることをお勧めする.
Windows
このテクニカルノートの目的の面においてはWindowsでは追加の必要条件はない.
Windows上でソースからrJava Rパッケージを構築するプロセスは,比較的複雑であるため,このテクニカルノートでは触れない. 新しいバージョンのRについては,ほとんどの場合Windows用のCRANで事前にコンパイルされたバイナリバージョンのパッケージが使用できる.古いバージョンのRについては,RLinkに事前構築されたJRIライブラリがすでに含まれている.
Linux
Linuxでは,rJava Rパッケージ用のRの設定と構築のプロセスで通常CとJavaのソースコードをコンパイルすることが必要である.つまり標準開発ツールをインストールする必要がある.これらのインストールの過程はLinuxのフレーバーによる.
sudo yum groupinstall "Development Tools"
sudo yum install ncurses-devel zlib-devel texinfo gtk+-devel gtk2-devel
sudo yum install qt-devel tcl-devel tk-devel kernel-headers kernel-devel
具体的にどのライブラリとツールが必要であるかは,Linuxフレーバーと使用しているLinuxマシンの設定の詳細によって異なる.
Rの設定過程
ここで説明する過程は,それぞれのRのインストールについて一度行えばよい.通常サポートされているプラットフォームすべてにおいて同じような過程で,rJava Rパッケージをインストールしてそのパッケージへのパスを指定すればよい.しかしプラットフォームごとに詳細は異なる.
macOS
1. ターミナルを開いてOpen the terminal and go to the Rのインストールフォルダに進む.そのフォルダへの典型的なパスは以下のようなものである:
/Library/Frameworks/R.framework/Versions/4.1-arm64/Resources
2. 使用するRバージョンだけがインストールされている場合やシステムのデフォルトバージョンである場合には,ターミナルに以下をタイプする:
./R
それ以外の場合には,ターミナルで以下の行を実行する(これらの行は,開始したR REPLが現行のグローバルデフォルトではなく,意図したバージョンのRを参照するために通常必要である):
export R_HOME=$(pwd)
cd bin/exec
export PATH=$(pwd):$PATH
./R
4. 常に必要なわけではないが,JAVA_HOME環境変数をインストールされたJDKのホームパスに設定することが推奨される.それを行うためには,以下をRのREPLに入力(正しいパスをJDKに挿入)する:
Sys.setenv(JAVA_HOME="/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home")
install.packages('rJava', repos='http://cran.us.r-project.org', dependencies=TRUE)
X11モジュールについての警告(上のスクリーンショットにはない)が表示されることもあるが,無視しても大丈夫である.
6. パッケージのインストールに成功したことを確認し,パッケージの場所を知るためには,以下をタイプする:
find.package('rJava')
このパスはRLinkにJRI ライブラリを構築するように指示する際に使われるので,メモしておくことが重要である.
8. JRIライブラリを含むフォルダへの完全なパス(RLinkに指示しなければならないパス)は jriサブフォルダが加えられた先ほどのパスであることに注意する:
考えられる問題
rJavaパッケージをソースから構築する必要がある
特に古いバージョンのRでは,事前構築されたrJavaパッケージがR配布サーバにないことがある.その場合,ソースから構築する必要がある.これを行う場合には,上で説明したステップ5でミラー選択を入力した後に以下と同じようなスクリーンが表示される:
macOSでは,このステップの完了には特定のXcodeでApple Developer Toolsをインストールする必要がある.これにはさらに追加のステップが必要になることもある.
Xcodeがインストールされている場合には,プロンプトに"y"または"yes"とタイプする.その後コンパイルプロセスを続けることができる.
rJavaの構築プロセス中のエラー"clang: error: unsupported option '-fopenmp'"
上に記載されているようにソースからrJavaパッケージをコンパイルすると,以下のようなコンパイルエラーが発せられることがある:
その場合には,追加のステップが必要である.上に記載されているステップ1と2にまず従う.その後,Clang/OpenMP(以下の指示のパッケージマネージャとしてここではHomebrewが想定されている)をインストールする必要がある.ターミナルプロンプトに以下をタイプする:
brew install llvm libomp
export CC=/usr/local/opt/llvm/bin/clang
JAVA_HOME環境変数を設定あるいはエキスポートする(インストールされたJDKへの正しいパスを使うこと)ことも必要となる:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
その後このコマンド(以下はサンプルの出力)をResources/binディレクトリから実行する:
./R CMD javareconf
そして,もとの手順のステップ3に戻って従う.ソースからrJavaを構築するプロンプトが返されたら"yes"とタイプする.構築プロセスは正常に行えるはずである.
Windows
1. Windowsのコマンドラインコンソールを開き,Rのインストールフォルダに行く.管理者権限でこれを行うことが望ましいが,絶対必要というわけではない.
C:\Program Files\R\R-4.3.1
cd bin
R
3. R REPLでJAVA_HOME 環境変数を以下のようにインストールされたJDKへのパスに設定(使用しているシステムの正しいパスを挿入)する:
Sys.setenv(JAVA_HOME="C:\\Program Files\\Zulu\\zulu-11")
パスのセグメントを区別するためにダブルスラッシュを必ず使う.
install.packages('rJava', repos='http://cran.us.r-project.org', dependencies=TRUE)
インストールに成功した場合には以下のような出力が表示される:
特にコマンドラインシェルが管理者権限なしで起動された場合には,標準Rライブラリの場所に書込みができないことがある.その場合には,パッケージが保存されている別のライブラリの場所を使う許可をRが求めてくる.すべての質問に対して"y"とタイプしてこれが行われるようにする.
使用可能なバイナリバージョンが最新のものではないこともある.その場合,Rはバイナリバージョンを使って継続するか,ソースからライブラリを構築するかを尋ねる.使用可能なバイナリバージョンを使って続行するには,プロンプトに"n"と答えるべきである.
5. パッケージのインストールに成功したことを確認し,パッケージの場所を知るためには,以下をタイプする:
find.package('rJava')
このパスはRLinkにJRI ライブラリを構築するように指示する際に使われるので,メモしておくことが重要である.
7. JRIライブラリを含むフォルダへの完全なパス(RLinkに指示しなければならないパス)は jri/x64サブフォルダが加えられた先ほどのパスであることに注意する:
追加情報
WindowsにおけるrJavaのインストールと構築のプロセスについての追加情報は,ここで見ることができる.
Linux
1. ターミナルを開き,Rのインストールフォルダに行く.そのフォルダへの典型的なパスは以下に似たものになる:
/opt/R/4.3.1/lib64/R
使用するRバージョン以外のバージョンがインストールされている場合には,ターミナルで以下の行を実行する(これで正しいバージョンのRが正しいライブラリとともに起動される):
export R_HOME=$(pwd)
export LD_LIBRARY_PATH=$(pwd)/lib
2. 必ずしも必要ではないが,以下も実行する(インストールされたJDKへの正しいパスをここに挿入する)ことが推奨される:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
sudo update-alternatives --config java
提供された選択の中から正しいJavaバージョンを選ぶ(プロンプトで選択を入力する):
次にRが選択されたJava/JDKのバージョンを使うように設定する:
sudo ./bin/R CMD javareconf
成功したときに表示される出力のサンプルは以下のようなものである:
使用するRバージョンがインストールされた唯一のバージョンである場合やシステムのデフォルトバージョンである場合は,ターミナルに以下をタイプする:
./R
cd bin/exec
export PATH=$(pwd):$PATH
./R
install.packages('rJava', repos='http://cran.us.r-project.org', dependencies=TRUE)
現行ユーザが書き込める場所に標準Rライブラリがない場合は,別の場所にパッケージを保存することを薦めるプロンプトが表示されることもある:
5. パッケージのインストールに成功したことを確認し,パッケージの場所を知るためには,以下をタイプする:
find.package('rJava')
このパスはRLinkにJRI ライブラリを構築するように指示する際に使われるので,メモしておくことが重要である.
7. JRIライブラリを含むフォルダへの完全なパス(RLinkに指示しなければならないパス)は jriサブフォルダが加えられた先ほどのパスであることに注意する:
考えられる問題
"Unable to run a simple JNI program"エラー
rJavaパッケージの構築プロセス中に以下のようなエラーが表示されることがある:
この場合には,誤ったバージョンのJDK(JDK 1.8)が使われていたためにエラーが表示された.ステップ2のサブステップをすべて行うと,エラーは表示されなくなるはずである.これらのステップは指定のRセッションにおいて正しいバージョンのJava/JDKが使われるように設定するためのステップだからである.
RLinkを設定された外部のR配布と一緒に使う
指定のR配布がRLinkと一緒に使われるように一旦設定すると,その配布でRLinkが使える.以下はRLinkがサポートされているさまざまなプラットフォーム上で適切に設定されたR配布に接続する例である.
macOS
以下は,macOS上で正しく設定された外部のRのインストールでどのようにRLinkを起動すべきかについての典型的な例である.
Windows
以下は,Windows上で正しく設定された外部のRのインストールでどのようにRLinkを起動すべきかについての典型的な例である.
Linux
以下は,Linux上で正しく設定された外部のRのインストールでどのようにRLinkを起動すべきかについての典型的な例である.