[英]How to maintain R (renv) project
我和我的同事正在 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
顯示警告package 'X' was built under R version 3.6.3
。
如果renv不能恢復原始狀態,因為所有包都被 R 的更新更改了,那還有什么意義呢? 如何正確管理 R 項目?
這里的潛在問題是nloptr
最近更新到版本 1.2.2.1,因此 1.2.1 的二進制文件在 CRAN 上不再可用。
那么,最簡單的解決方案是升級到最新版本的nloptr
,以便您可以訪問較新的二進制文件。 或者,您可以使用鎖定到該特定時間點的檢查點MRAN存儲庫,以便可以提供當天可用的二進制文件。
如果您希望能夠從源代碼安裝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 會話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.