首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何维护R (renv)项目

如何维护R (renv)项目
EN

Stack Overflow用户
提问于 2020-03-11 15:38:13
回答 1查看 1.3K关注 0票数 4

我和我的同事正在写一本书,书是关于RStudio的Bookdown。由于我创建了很多图形,并且因此我对其他包(ggplot、ggforce、gganimate、.)有很多依赖,所以我在这本书的过程中添加了renv来处理包管理。在彻底安装了我的Windows之后,我现在确实遇到了重新设置项目的问题,因为有从R到3.6.3版本的更新,并且使用了软件包。

带有renv的项目的初始状态是R,版本为3.6.2,我重新安装了该版本。在打开项目之后,我运行renv::restore()来恢复所有包的环境。目前只有包nloptr (版本1.2.1)有一个错误,因为它必须从源代码构建包。

代码语言:javascript
复制
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

要解决此错误,我通过以下方法手动安装包:

代码语言:javascript
复制
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项目?

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 05:09:39

这里的根本问题是,nloptr最近更新为1.2.2.1版本,因此1.2.1的二进制文件在CRAN上不再可用。

因此,最简单的解决方案是升级到最新版本的nloptr,以便您可以访问较新的二进制文件。或者,您可以使用锁定在特定时间点的检查点马兰存储库,这样可以为当天可用的二进制文件提供服务。

如果希望能够从源代码中安装nloptr,可以考虑升级到renv的开发版本。您可以使用renv::equip()从源代码中下载编译nloptr (和其他一些R包)所需的库。例如:

代码语言:javascript
复制
> 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的开发版本:

代码语言:javascript
复制
renv::upgrade(version = "master")

确保在更新renv后重新启动R会话。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60639641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档