(追記)R4.0.0からのRtools40ではPATHの設定が変わった
RStudioでライブラリをインストールやアップデートするときにまだバイナリーができてないために、ソースからビルドするときがあります。
このときに必要になるのがRtoolsなのですが、自分の環境下でRtoolsをインストールしている(パスも通している)のにしばしばRStudioがRtoolsを見失い(?)、RStudioがRtoolsが見つけられないときの対処法について。
なぜか、同様のことをR本体でやると、はじめからちゃんとRtoolsをみつけてビルド通してくれる。
R本体とRStudioで参照しているパスが異なる?
自分の環境だけ?
今後調べなければ……
(追記) エラーの原因が判明した(多分)。
昔、よくわかっていないときにRStudioにリコメンドされてインストールしたRBuildToolsをアンインストールしてパスも消していたけど、アンインストールしただけだとCドライブにRBuildToolsのフォルダが残っていて、これを消したらエラーでなくなった。
RBuildToolsはアンインストールしたときに空っぽのフォルダを残していくみたい。
んで、RStudioがそのフォルダの中身をみて、「中身が空だよ!」と教えてくれていたみたい。
RBuildToolsが「私のことを忘れないでね」って感じ?
RStudioでもリコメンドしてインストールするビルドツールをRtoolsに統一してほしい(八つ当たり)。
RBuildToolsをかつてインストールしてウィザードからアンインストールしてそのままで同じエラーがでる(稀有な人)のためにものこしておく(言い訳)。
環境
R 3.6.2
RStudio 1.2.5033
Rtools 35(ちゃんとCドライブ直下にインストールしている)
(追記)RBuildToolsを昔インストールしていてアンインストールしてウィザードからアンインストールしてそのままだった、RBuildToolsのフォルダは中身空っぽで残っていた
対策と実行
ライブラリをインストールするときにソースからビルドすると聞かれたときにyesとこたえるとRStudioだと
sh: C:/RBuildTools/3.5/mingw_32/bin/g++: No such file or directory
とRBuildToolsを探してそんなのないよ、コンパイルできないよ、とのたまってくる。
RBuildToolsはRStudio側でRtoolsが見つけられないときにインストールをリコメンドしてくるRtoolsで中身はRtoolsと一緒で、これでコンパイルしたがる(理由は不明)。
しかしRtoolsがあってもなぜかRBuildToolsでコンパイルしようとするなぞ現象が起こってしまう。
ちゃんとRtoolsがインストールされパスが通っていれば
pkgbuild::find_rtools(debug = TRUE)
で
Scanning R CMD config CC... cc_path: C:/RBuildTools/3.5/mingw_64/bin/gcc 'C:/RBuildTools/3.5/mingw_64/bin/gcc' does not exist Scanning path... ls: C:\Rtools\bin\ls.exe gcc_path: VERSION.txt Rtools version 3.5.0.4 Version: 3.5 Found compatible gcc on path [1] TRUE
と相変わらずRBuildToolsを探そうとしているが見つけられず(インストールしてないから当たり前)、パスをスキャンしてRtoolsを見つけてくれる。
そうすると、この後からはちゃんとソースからビルドするときにちゃんとRtoolsを使ってコンパイルしてくれるようになる。