【发布时间】:2020-03-11 15:38:13
【问题描述】:
我和我的同事正在使用 RStudio 中的 Bookdown 编写一本书。由于我使用 ggplot 创建了很多图形,因此我对其他包(ggplot、ggforce、gganimate...)有很多依赖关系,因此我在本书的过程中添加了 renv 来处理包管理。全新安装 Windows 后,我现在再次设置项目时遇到问题,因为从 R 到版本 3.6.3 的更新和使用的包。
带有 renv 的项目的初始状态是 R 版本 3.6.2,我重新安装了它。打开项目后,我运行renv::restore() 以使用所有包恢复环境。目前只有包 nloptr(版本 1.2.1)有错误,因为它必须从源代码构建包。
Installing minqa [1.2.4] ...
OK (linked cache)
Installing nloptr [1.2.1] ...
FAILED
Error installing package 'nloptr':
==================================
* installing *source* package 'nloptr' ...
** package 'nloptr' successfully unpacked and MD5 sums checked
** using staged installation
**********************************************
WARNING: this package has a configure script
It probably needs manual configuration
**********************************************
** libs
C:/Rtools/mingw_64/bin/g++ -std=gnu++11 -I"C:/PROGRA~1/R/R-36~1.2/include" -DNDEBUG -O2 -Wall -mtune=generic -c dummy.cpp -o dummy.o
C:/Rtools/mingw_64/bin/gcc -I"C:/PROGRA~1/R/R-36~1.2/include" -DNDEBUG -I"/x64/include" -O2 -Wall -std=gnu99 -mtune=generic -c init_nloptr.c -o init_nloptr.o
init_nloptr.c:35:19: fatal error: nlopt.h: No such file or directory
#include "nlopt.h"
^
compilation terminated.
make: *** [C:/PROGRA~1/R/R-36~1.2/etc/x64/Makeconf:208: init_nloptr.o] Error 1
ERROR: compilation failed for package 'nloptr'
* removing 'C:/Users/Ralph/DOCUME~1/ML2/ml2-buch/renv/staging/1/nloptr'
Fehler: install of package 'nloptr' failed
要解决此错误,我通过以下方式手动安装包:
packageurl <- "https://cran.r-project.org/bin/windows/contrib/3.7/nloptr_1.2.1.zip"
install.packages(packageurl, repos=NULL, type="binary")
之后可以安装所有软件包,但现在,其中许多显示警告package 'X' was built under R version 3.6.3。
renv 如果它不能恢复原始状态,因为所有的包都被 R 的更新改变了,那它有什么意义呢?如何正确管理 R 项目?
【问题讨论】:
-
我很同情这种困境,拉尔夫。这可能是
renv的错误(我不肯定)。但为了清楚起见,您的问题是nloptr不可编译性,是renv没有选择二进制包,还是您不喜欢 "built under" 警告?跨度> -
@r2evans 感谢您的同情^^。两者更大的问题是
nloptr(可能只有Windows)不能在locked 版本中自动安装。所以你必须从头开始设置你的环境:要么你必须自己构建所需的包,要么必须安装一个新版本,这可能会有一个新的行为。目前只有1个包,半年后10个包都做不出来了,一个新同事想继续写这本书怎么办?
标签: r package-management renv