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


TL;DR

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

我刚刚安装了R(v4.1(、Rstudio和刚刚安装的devtools。我还额外安装了Rtools40,并将其添加到我的路径(全局环境(中

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

问题

我无法从GitHub安装任何软件包,例如rstudio/gt。任何GitHub包的错误都几乎相同,始终声明system error 267

devtools::install_github("rstudio/gt")
Downloading GitHub repo rstudio/gt@HEAD
Error: Failed to install 'gt' from GitHub:
create process 'C:/PROGRA~1/R/R-41~1.0/bin/x64/Rcmd.exe' (system error 267, Der Verzeichnisname ist ungültig.
) @win/processx.c:1040 (processx_exec

更新

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

devtools::install_github("rstudio/gt")
Downloading GitHub repo rstudio/gt@HEAD
Error: Failed to install 'gt' from GitHub:
create process 'C:/R/bin/x64/Rcmd.exe' (system error 267, Der Verzeichnisname ist ungültig.
) @win/processx.c:1040 (processx_exec)

更新2:

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

.libPaths( c( "D:/tmp" , .libPaths() ) )
.libPaths()
[1] "D:/tmp"                                     "C:/Users/Björn/Documents/R/win-library/4.1"
[3] "C:/R/library"  
Error is still the same

更新3:

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

install.packages("testthat") 
install.packages("pkgload") 
install.packages("devtools") 
install.packages("remote")

Sys.getenv 的内容

Sys.getenv('Path')
[1] "C:\rtools40\usr\bin;C:\R\bin\x64;C:\rtools40\usr\bin;C:\rtools40\mingw64\bin;

诊断

会话信息

> sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)
Matrix products: default
locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252
[4] LC_NUMERIC=C                    LC_TIME=German_Germany.1252    
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

rtools成功安装/安装

Sys.which("make")
make 
"C:\rtools40\usr\bin\make.exe" 
maketools::rtools_find()
$version
[1] ‘4.0’
$compiler
[1] "gcc 8.3.0"
$api
[1] ‘8’
$PATH
[1] "C:\rtools40\usr\bin"
$BINPREF
[1] "C:/rtools40/mingw$(WIN)/bin/"
$available
[1] TRUE
$compatible
[1] TRUE   

remotes包的独立模式为我解决了这个问题,正如processx的维护者(Gábor Csárdi(在这里所建议的那样

devtools::install_github()只调用remotes::install_github()
但是,对于远程设备,可以选择在独立模式中执行

来源:Cran

独立模式

remotes将使用curl、git2r和pkgbuild包,如果它们是安装的目的是为安装过程。但是,如果您正在使用遥控器进行安装或更新这些包(或它们的反向依赖项(在安装可能会失败(尤其是在Windows上(。

如果将环境变量R_ REMOTES_STANDALONE=;真";(例如。在R Sys.setenv(R_REMOTES_STANDALONE="true"(中,您可以强制远程在独立模式下运行,仅使用其内部R实现。这将允许成功安装这些包装

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

Sys.setenv(R_REMOTES_STANDALONE="true")
remotes::install_github("rstudio/gt")

感谢所有评论员的帮助!

2021年10月更新

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

install.packages("pacman")
pacman::p_del(processx)
# Installing previous verison 3.5.1
install.packages("https://cran.r-project.org/src/contrib/Archive/processx/processx_3.5.1.tar.gz", repos=NULL, type="source") 

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

devtools::install_github("rstudio/gt")

最新更新