【问题标题】:Rtools not being detected by RR未检测到Rtools
【发布时间】:2013-11-22 00:24:11
【问题描述】:

更新:

我已经为installing Rtools on windows 写了一个简短的演练指南。

原文:

我正在尝试在 Windows 7 上使用 RStudio 构建 R 包。当我尝试通过 RStudio 的构建面板构建包时,我收到:

WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

http://cran.rstudio.com/bin/windows/Rtools/

加载 library(devtools) 并运行 find_rtools(T) 给出:

Scanning path...
ls : F:\Rtools\bin\ls.exe 
Scanning registry...
Found F:/Rtools for 3.1 
VERSION.txt
Rtools version 3.1.0.1936 
[1] TRUE

Path变量设置为:

F:\Rtools\bin;F:\Rtools\gcc-4.6.3\bin;F:\Rtools\perl\bin;F:\Rtools\MinGW\bin;F:\Program Files\R\R-3.0.2\bin\x64;F:\Program Files (x86)\HTML Help Workshop;F:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\Microsoft Network Monitor 3\;F:\Program Files (x86)\QuickTime\QTSystem\

我也重新启动了几次,但错误仍然存​​在。我有点困惑为什么会发生这种情况。

R访问系统变量Path时的输出:

> Sys.getenv()['PATH']
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 PATH 
"F:\\Program Files\\R\\R-3.0.2\\bin\\x64;F:\\Rtools\\bin;F:\\Rtools\\gcc-4.6.3\\bin;F:\\Rtools\\perl\\bin;F:\\Rtools\\MinGW\\bin;F:\\Program Files\\R\\R-3.0.2\\bin\\x64;F:\\Program Files (x86)\\HTML Help Workshop;F:\\Program Files\\MiKTeX 2.9\\miktex\\bin\\x64\\;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\Common Files\\Microsoft Shared\\Windows Live;C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows Live;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files (x86)\\Windows Live\\Shared;C:\\Program Files\\Microsoft Network Monitor 3\\;F:\\Program Files (x86)\\QuickTime\\QTSystem\\" 

我正在使用的R版本是:R版本3.0.2(2013-09-25)--“飞盘航行”。

我使用的 Rstudio 版本是:0.97.551。当我检查更新时,我被告知这是最新的补丁。

> Sys.which("ls.exe")
                   ls.exe 
"F:\\Rtools\\bin\\ls.exe" 
> Sys.which("gcc.exe")
gcc.exe 
     "" 

【问题讨论】:

  • 检查 Sys.getenv()['PATH'] 看看这是否也是 R 中的路径。
  • 我只在 \\ 与 PATH 环境中的单个 \ 中获得相同的路径。路径输出包含与上述相同的内容。我会发布它,但评论限制了我的字符数。
  • 听起来 devtools 可以找到它,但 RStudio 没有,因此您可以改用 devtools 函数(例如build)。您没有说明您使用的是哪个版本的 Rstudio - 请确保您拥有最新版本,如果仍然无法正常工作,请在 support.rstudio.org 报告错误
  • 您看到Sys.which("ls.exe")Sys.which("gcc.exe") 的输出是什么? RStudio 期望这两个都在路径上,并且在 Rtools 目录中。
  • > Sys.which("ls.exe") ls.exe "F:\\Rtools\\bin\\ls.exe" > Sys.which("gcc.exe") gcc。 exe "" 那么,gcc 好像没有被找到?

标签: windows r rstudio


【解决方案1】:

结果是,当我安装 RTools 时,我在安装中遗漏了 R 2.15.x+ 工具链选项,这导致 gcc 永远不会被安装。如果 RStudio 注册 RTools 失败,希望这篇文章可以作为诊断指南。

感谢大家的帮助。

【讨论】:

  • 有关此错误消息的另一种可能解决方案,请参阅:stackoverflow.com/a/37738504/4468078
  • 请不要对另一个问题进行此类重定向,而这些问题又会重定向到另一个问题。您提供的问题与 RStudio 未在自定义路径上检测 Rtools 有关。这是一个已根据 RStudio 版本修复的错误。
  • 如何检查他们是否安装了工具链?也许Sys.which("gcc.exe")
  • @coatless 哇,感谢您的即时回复。我找到了修复(在我的路径中向上移动 RTools)并添加了答案。
  • 令人着迷的是这个 RStudio 错误经常抬起它丑陋的脑袋;例如,RStudio Desktop 1.2.5033 在 RStudio Desktop 1.1.464 处理得很好之后,Rtools 不在 C:\Rtools 中再次遇到重大困难。还应该提到的是,在大多数情况下(只要 BINPREF 设置正确)普通的 RGui 从类型“源”安装 pkg 没有任何问题!所以这确实是一个主要的 RStudio 错误,您可以随时退回到 RGui - 以防万一!
【解决方案2】:

Windows 上安装的 RTools 默认不选择要包含的 C 编译器。我运行安装几次盲目点击并得到这个错误。我重新运行了安装程序并选择/包含了 32 位和 64 位 C 编译器。问题解决了。

【讨论】:

    【解决方案3】:

    还可以补充一点,如果您的计算机没有管理员权限,Rtools 的安装将由于缺少某些注册表权限而失败。

    我花了很长时间才弄清楚这一点,因为如果您通过 R 安装 Rtools,您将不会看到此警报。

    所以最好下载 .exe 文件,以管理员身份安装并勾选上述框以使 Rtools 正常工作。

    【讨论】:

      【解决方案4】:

      我有同样的错误,我已经安装了工具链(我相信)。

      我的解决方法是将 R 工具路径移动到我的 PATH 变量的前面。

      【讨论】:

      • 我必须在 Windows 上将 C:\rtools40\usr\bin 添加到 PATH
      • @SahilSingh 刚刚将我的 R 更新到 4.0,并且 rtools 路径似乎已从 Rtools/bin 更改为 rtools40/usr/bin
      • writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")
      • 在使用Sys.which("make")进行测试后,还应该重新启动 R
      【解决方案5】:

      另一个可能的原因是 R 通过R CMD check not looking for gcc in Rtools directory 在错误的目录中查找 RTools 组件:

      R 使用BINPREF 变量来定位某些可执行文件,包括 RTools 的组件。

      BINPREF 可以设置在多个位置。就我而言,它设置在C:/Users/MYUSERNAME/Documents/.R/Makevars。删除此文件的内容会删除一个指向先前安装 RTools 的链接,因为删除后,安装 RTools。

      还值得检查文件$RPATH/etc/i386/Makeconf(如果您有 64 位安装,则将 i386 换成 x64),每次新安装 R 时都会重新创建该文件。注意该行 BINPREF ?= c:/Rtools/mingw_32/bin/,它(通过?= 运算符)将设置BINPREF 的值,如果它尚未设置,就像在上面提到的Makevars 文件中一样。

      临时解决方法是将BINPREF ?= 替换为BINPREF =, 但是由于 Makeconf 文件在 R 更新时会被覆盖,因此您必须记住每次都这样做。最好编辑或删除 Makevars 文件以进行永久更改。

      【讨论】:

        【解决方案6】:

        您可以通过键入以下内容将 Rtools 添加到您的路径中:

        writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")
        

        【讨论】:

          【解决方案7】:

          https://cran.r-project.org/bin/windows/Rtools/

          从 R 4.0.0(2020 年 4 月发布)开始,R for Windows 使用名为 rtools40 的全新工具链包。

          此版本的 Rtools 将 mingw-w64 gcc 工具链升级到 8.3.0 版本,并引入了基于 msys2 的新构建系统,这使得构建和维护 R 本身以及 R 包所需的系统库更加容易视窗。有关后者的更多信息,请点击本文档底部的链接。

          本文档是关于 rtools40,用于 R 4.0.0 和更新版本的当前版本。有关可用于 R 3.6.3 或更早版本的 Rtools 早期版本的信息,请访问此页面。 安装 Rtools40

          请注意,rtools40 仅需要使用源代码中的 C/C++/Fortran 代码构建 R 包。默认情况下,R for Windows 安装来自 CRAN 的预编译“二进制包”,您不需要 rtools!

          要使用 rtools40,请从 CRAN 下载安装程序:

          On Windows 64-bit: rtools40-x86_64.exe (recommended: includes both i386 and x64 compilers)
          On Windows 32-bit: rtools40-i686.exe (i386 compilers only)
          

          RStudio 用户注意事项:请检查您使用的是最新版本的 RStudio(至少 1.2.5042)来使用 rtools40。

          将 Rtools 放在 PATH 上

          安装完成后,您需要再执行一个步骤才能编译 R 包:您需要将 Rtools make 实用程序(bash、make 等)的位置放在 PATH 上。最简单的方法是在 Documents 文件夹中创建一个文本文件 .Renviron,其中包含以下行:

          PATH="${RTOOLS40_HOME}\usr\bin;${PATH}"

          您可以使用文本编辑器执行此操作,或者您甚至可以像这样在 R 中执行此操作:

          writeLines('PATH="${RTOOLS40_HOME}\usr\bin;${PATH}"', con = "~/.Renviron")

          现在重新启动 R,并验证是否可以找到 make,这应该会显示 Rtools 安装的路径。

          Sys.which("make")

          "C:\rtools40\usr\bin\make.exe"

          如果可行,您可以尝试从源代码安装 R 包:

          install.packages("jsonlite", type = "source")

          如果成功,您就可以开始了!请参阅以下链接以了解有关 rtools40 和 Windows 构建基础架构的更多信息。

          【讨论】:

            【解决方案8】:

            Windows 用户可能会出现此错误消息,当您登录的 Windows 用户没有添加文件的权限时,或者当防病毒程序隔离时(无论是否有您的知识)R安装过程中的一些关键文件。

            通常,您可以通过授予 Windows 用户所需的权限

            来解决此问题

            背景:

            • 我尝试了install.packages("Rtools"),但没有帮助 Rtools 不是 R 包,而是无法通过 install.packages() 安装的独立安装程序(感谢 @coatless)
            • windows 用户获得所需权限后,`install.packages("tidyverse") 之类的操作成功(无需尝试重​​新安装 Rtools)。
            • 通常在关闭防病毒、卸载 R,然后重新安装 R 之后,一切都会按预期运行。

            或者,尝试单独下载 rtools here 并运行下载的 .exe 文件来安装它 - 这对我有用。

            【讨论】:

              猜你喜欢
              • 2016-01-11
              • 2018-10-06
              • 1970-01-01
              • 1970-01-01
              • 2018-04-15
              • 2022-01-17
              • 1970-01-01
              相关资源
              最近更新 更多