備忘ログ

チラシの裏的備忘録&メモ

RStudioでRtoolsを見つけてくれないときの対処法(追記あり)

(追記)R4.0.0からのRtools40ではPATHの設定が変わった

indenkun.hatenablog.com

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を使ってコンパイルしてくれるようになる。