无法安装 R 包,因为未找到 "make",尽管已安装 Rtools 并包含 PATH

Cannot install R packages because "make" is not found, although Rtools is installed and PATH is included

我正在尝试 运行 a packrat:restore() 来恢复我项目中的所有库。当我 运行 命令时,我收到以下消息:

所以看起来 'make' 命令不存在,这就是无法构建包的原因。此可执行文件位于 Rtools 中。我的电脑上安装了 Rtools 3.5。该目录在 PATH 变量中:

果然我在目录中找到了 make executable

但是当我 运行 命令 Sys.which 它没有 return 可执行文件的路径:

我不明白这是什么问题。我用谷歌搜索了这个问题,有人建议安装新版本的 Rtools(但是我 运行ning R 版本 3.6.1,最新版本的 Rtools 是针对 R 版本 4.x,所以这对我来说没有意义,因为我不想安装新的 R 版本),或者将 Rtools 的路径添加到 PATH,但是已经配置好了。

有什么想法吗?

谢谢, 韩国

我认为你的 PATH 中不能有空格。

为了在我的系统上进行测试,我从 PATH 开始,但无法访问 make.exe

Sys.which("make")
# make 
#   "" 
file.exists("c:/rtools40/usr/bin/make.exe")
# [1] TRUE

oldpath <- Sys.getenv("PATH")
grepl("rtools", oldpath, ignore.case = TRUE)
# [1] FALSE

Sys.setenv(PATH = paste0(oldpath, "; c:\rtools40\usr\bin"))
Sys.which("make")
# make 
#   "" 
Sys.setenv(PATH = paste0(oldpath, ";c:\rtools40\usr\bin"))
Sys.which("make")
#                               make 
# "c:\rtools40\usr\bin\make.exe" 

顺便说一句,如果你不喜欢所有的 double-backslashes,即使在 windows R 上也可以使用 forward-slash 作为它的 .Platform$file.sep

Sys.setenv(PATH = paste0(oldpath, ";c:/rtools40/usr/bin"))
Sys.which("make")
#                               make 
# "c:\rtools40\usr\bin\make.exe"