我和我的同事正在写一本书,书是关于RStudio的Bookdown。由于我创建了很多图形,并且因此我对其他包(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。
如果它不能恢复原始状态,因为所有的包都被R的更新更改了,那么renv有什么意义呢?如何正确管理R项目?
发布于 2020-03-19 05:09:39
这里的根本问题是,nloptr最近更新为1.2.2.1版本,因此1.2.1的二进制文件在CRAN上不再可用。
因此,最简单的解决方案是升级到最新版本的nloptr,以便您可以访问较新的二进制文件。或者,您可以使用锁定在特定时间点的检查点马兰存储库,这样可以为当天可用的二进制文件提供服务。
如果希望能够从源代码中安装nloptr,可以考虑升级到renv的开发版本。您可以使用renv::equip()从源代码中下载编译nloptr (和其他一些R包)所需的库。例如:
> renv::equip()
The following external software tools will be installed:
curl-7.68.0-win32-mingw.zip
glpk32.zip
glpk64.zip
local323.zip
nlopt-2.4.2.zip
spatial324.zip
Tools will be installed into '~/AppData/Local/renv/extsoft'.
Do you want to proceed? [y/N]: y
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/curl-7.68.0-win32-mingw.zip' ...
OK [downloaded 2.9 Mb in 1.5 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/glpk32.zip' ...
OK [downloaded 457.7 Kb in 1 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/glpk64.zip' ...
OK [downloaded 481.6 Kb in 1 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/local323.zip' ...
OK [downloaded 9.6 Mb in 2.3 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/nlopt-2.4.2.zip' ...
OK [downloaded 752.6 Kb in 1.2 secs]
Retrieving 'https://s3.amazonaws.com/rstudio-buildtools/extsoft/spatial324.zip' ...
OK [downloaded 20.9 Mb in 2.6 secs]
* External software successfully updated.
The following entries will be added to ~/.R/Makevars:
LOCAL_SOFT = C:/Users/kevin/AppData/Local/renv/extsoft
LIB_XML = C:/Users/kevin/AppData/Local/renv/extsoft
LOCAL_CPPFLAGS = -I"$(LOCAL_SOFT)/include"
LOCAL_LIBS = -L"$(LOCAL_SOFT)/lib$(R_ARCH)" -L"$(LOCAL_SOFT)/lib"
These tools will be used when compiling R packages from source.
Do you want to proceed? [y/N]: y
* '~/.R/Makevars' has been updated.
> install.packages("nloptr", type = "source")
* 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
*** arch - i386
c:/Rtools/mingw_32/bin/g++ -std=gnu++11 -I"C:/R/R-36~1.2RC/include" -DNDEBUG -I"C:/Users/kevin/AppData/Local/renv/extsoft/include" -g -O2 -Wall -pedantic -c dummy.cpp -o dummy.o
c:/Rtools/mingw_32/bin/gcc -I"C:/R/R-36~1.2RC/include" -DNDEBUG -I"C:/Users/kevin/AppData/Local/renv/extsoft/include" -I"/i386/include" -g -O3 -Wall -pedantic -c init_nloptr.c -o init_nloptr.o
c:/Rtools/mingw_32/bin/g++ -std=gnu++11 -shared -s -static-libgcc -o nloptr.dll tmp.def dummy.o init_nloptr.o nloptr.o -L/i386/lib -lnlopt_cxx -LC:/Users/kevin/AppData/Local/renv/extsoft/lib/i386 -LC:/Users/kevin/AppData/Local/renv/extsoft/lib -LC:/R/R-36~1.2RC/bin/i386 -lR
installing to C:/Users/kevin/R/win-library/3.6/00LOCK-nloptr/00new/nloptr/libs/i386
*** arch - x64
c:/Rtools/mingw_64/bin/g++ -std=gnu++11 -I"C:/R/R-36~1.2RC/include" -DNDEBUG -I"C:/Users/kevin/AppData/Local/renv/extsoft/include" -g -O2 -Wall -pedantic -c dummy.cpp -o dummy.o
c:/Rtools/mingw_64/bin/gcc -I"C:/R/R-36~1.2RC/include" -DNDEBUG -I"C:/Users/kevin/AppData/Local/renv/extsoft/include" -I"/x64/include" -g -O3 -Wall -pedantic -c init_nloptr.c -o init_nloptr.o
c:/Rtools/mingw_64/bin/g++ -std=gnu++11 -shared -s -static-libgcc -o nloptr.dll tmp.def dummy.o init_nloptr.o nloptr.o -L/x64/lib -lnlopt_cxx -LC:/Users/kevin/AppData/Local/renv/extsoft/lib/x64 -LC:/Users/kevin/AppData/Local/renv/extsoft/lib -LC:/R/R-36~1.2RC/bin/x64 -lR
installing to C:/Users/kevin/R/win-library/3.6/00LOCK-nloptr/00new/nloptr/libs/x64
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
converting help for package 'nloptr'
finding HTML links ... done
auglag html
bobyqa html
ccsaq html
check.derivatives html
cobyla html
crs2lm html
direct html
is.nloptr html
isres html
lbfgs html
mlsl html
mma html
neldermead html
newuoa html
nl.grad html
nl.opts html
nloptr-package html
nloptr html
nloptr.get.default.options html
nloptr.print.options html
print.nloptr html
sbplx html
slsqp html
stogo html
tnewton html
varmetric html
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
*** arch - i386
*** arch - x64
** testing if installed package can be loaded from final location
*** arch - i386
*** arch - x64
** testing if installed package keeps a record of temporary installation path
* DONE (nloptr)
The downloaded source packages are in
'C:\Users\kevin\AppData\Local\Temp\RtmpW4Mr1M\downloaded_packages'您可以使用以下方法安装renv的开发版本:
renv::upgrade(version = "master")确保在更新renv后重新启动R会话。
https://stackoverflow.com/questions/60639641
复制相似问题