R 无法从 GitHub 安装软件包(系统错误 267 @win/processx.c:1040)

Bjö*_*örn 6 r github devtools

长话短说

\n
\n

无法从 GitHub 安装任何包,系统错误 267

\n
\n

我新安装了 R (v4.1)、Rstudio 并刚刚安装了 devtools。\n我还另外安装了Rtools40并将其添加到我的路径(全局环境)中

\n

Rtools 似乎可以正常工作,并通过以下验证:Sys.which("make")& maketools::rtools_find()(输出如下)

\n

问题

\n

我无法从 GitHub 安装任何软件包,例如rstudio/gt。对于任何 GitHub 包,该错误几乎都是相同的,总是说明system error 267

\n
devtools::install_github("rstudio/gt")\nDownloading GitHub repo rstudio/gt@HEAD\nError: Failed to install \'gt\' from GitHub:\n  create process \'C:/PROGRA~1/R/R-41~1.0/bin/x64/Rcmd.exe\' (system error 267, Der Verzeichnisname ist ung\xc3\xbcltig.\n) @win/processx.c:1040 (processx_exec\n
Run Code Online (Sandbox Code Playgroud)\n

更新

\n

正如建议的那样,我将 R 4.1.0 重新安装到了最简单的文件夹C:/R/\n尽管现在缺少波浪号,但错误仍然相同~

\n
devtools::install_github("rstudio/gt")\nDownloading GitHub repo rstudio/gt@HEAD\nError: Failed to install \'gt\' from GitHub:\n  create process \'C:/R/bin/x64/Rcmd.exe\' (system error 267, Der Verzeichnisname ist ung\xc3\xbcltig.\n) @win/processx.c:1040 (processx_exec)\n
Run Code Online (Sandbox Code Playgroud)\n

更新2:

\n

将 .libPaths 更改为没有任何特殊字符的文件夹

\n
.libPaths( c( "D:/tmp" , .libPaths() ) )\n.libPaths()\n[1] "D:/tmp"                                     "C:/Users/Bj\xc3\xb6rn/Documents/R/win-library/4.1"\n[3] "C:/R/library"  \n\nError is still the same\n
Run Code Online (Sandbox Code Playgroud)\n

更新3:

\n

packageVersion(\'processx\')我更新了一些软件包,并检查了= 3.5.2的版本

\n
install.packages("testthat") \ninstall.packages("pkgload") \ninstall.packages("devtools") \ninstall.packages("remote")\n
Run Code Online (Sandbox Code Playgroud)\n

Sys.getenv 的内容

\n
 Sys.getenv(\'Path\')\n[1] "C:\\\\rtools40\\\\usr\\\\bin;C:\\\\R\\\\bin\\\\x64;C:\\\\rtools40\\\\usr\\\\bin;C:\\\\rtools40\\\\mingw64\\\\bin;\n
Run Code Online (Sandbox Code Playgroud)\n

诊断

\n

会议信息

\n
> sessionInfo()\nR version 4.1.0 (2021-05-18)\nPlatform: x86_64-w64-mingw32/x64 (64-bit)\nRunning under: Windows 10 x64 (build 19042)\n\nMatrix products: default\n\nlocale:\n[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252\n[4] LC_NUMERIC=C                    LC_TIME=German_Germany.1252    \n\nattached base packages:\n[1] stats     graphics  grDevices utils     datasets  methods   base\n
Run Code Online (Sandbox Code Playgroud)\n

Rtools 成功安装/设置

\n
Sys.which("make")\n                              make \n"C:\\\\rtools40\\\\usr\\\\bin\\\\make.exe" \n\nmaketools::rtools_find()\n$version\n[1] \xe2\x80\x984.0\xe2\x80\x99\n\n$compiler\n[1] "gcc 8.3.0"\n\n$api\n[1] \xe2\x80\x988\xe2\x80\x99\n\n$PATH\n[1] "C:\\\\rtools40\\\\usr\\\\bin"\n\n$BINPREF\n[1] "C:/rtools40/mingw$(WIN)/bin/"\n\n$available\n[1] TRUE\n\n$compatible\n[1] TRUE   \n
Run Code Online (Sandbox Code Playgroud)\n

Bjö*_*örn 5

远程包的独立模式为我解决了这个问题,\nas 由processx维护者建议(G\xc3\xa1bor Cs\xc3\xa1rdi)这里

\n

devtools::install_github()只打电话remotes::install_github()
\n但是,对于遥控器,可以选择以独立模式执行

\n

资料来源:克兰

\n
\n

独立模式

\n

如果安装了curl、git2r 和pkgbuild 软件包,则遥控器将使用它们来为安装过程的某些方面提供更快的实现。但是,如果您使用遥控器来安装或更新这些软件包(或其反向依赖项),则在安装过程中使用它们可能会失败(尤其是在 Windows 上)。

\n

如果设置环境变量 R_REMOTES_STANDALONE="true"(例如 R Sys.setenv(R_REMOTES_STANDALONE="true")),您可以强制遥控器在独立模式下运行并仅使用其内部 R 实现。这将允许成功安装这些\n软件包

\n
\n

通过以下几行代码,gt终于从github成功安装了。

\n
Sys.setenv(R_REMOTES_STANDALONE="true")\nremotes::install_github("rstudio/gt")\n
Run Code Online (Sandbox Code Playgroud)\n

感谢所有评论者的帮助!

\n

2021 年 10 月更新

\n

为了避免每次要从 github 安装新软件包时都必须一遍又一遍地执行这些步骤(设置为独立模式,并使用遥控器安装),另一个方便的解决方法是回滚到以前的版本,如processx@rempsy 中所建议的那样github问题:

\n
install.packages("pacman")\npacman::p_del(processx)\n# Installing previous verison 3.5.1\ninstall.packages("https://cran.r-project.org/src/contrib/Archive/processx/processx_3.5.1.tar.gz", repos=NULL, type="source") \n
Run Code Online (Sandbox Code Playgroud)\n

将 processx 回滚到 后version 3.5.1devtools::install_github()按预期工作,例如

\n
devtools::install_github("rstudio/gt")\n
Run Code Online (Sandbox Code Playgroud)\n