Renv无法编译包,但install.packages()可以正常工作

sshcrbum  于 2023-06-03  发布在  其他
关注(0)|答案(1)|浏览(180)

我遇到了以下问题:每次我想通过renv特定的命令安装包“class”,例如:renv::restore()或renv::install(“class@7.3-20”)时,我收到错误消息。但是,如果我运行install.packages(“class”,version=“7.3-20”),一切正常。
我从renv诊断开始:

> renv::diagnostics()
Diagnostics Report [renv 0.17.3]
================================

# Session Info =======================
R version 4.3.0 (2023-04-21 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default

用renv安装“class”会给出以下消息

> renv::install("class@7.3-20")
Consider removing these folders from your R library.

Retrieving 'https://cran.rstudio.com/src/contrib/Archive/class/class_7.3-20.tar.gz' ...
    OK [file is up to date]
Installing class [7.3-20] ...
    FAILED
Error installing package 'class':
=================================

* installing *source* package 'class' ...
** Paket 'class' erfolgreich entpackt und MD5 Summen überprüft
** using staged installation
** libs
using C compiler: 'gcc.exe (GCC) 12.2.0'
gcc  -I"C:/PROGRA~1/R/R-43~1.0/include" -DNDEBUG     -I"C:\Users\mschleri\AppData\Local/R/cache/R/renv/extsoft/include"     -O2 -Wall  -mfpmath=sse -msse2 -mstackrealign  -c class.c -o class.o
class.c:31:9: error: unknown type name 'Sint'; did you mean 'int'?
   31 | VR_knn1(Sint *pntr, Sint *pnte, Sint *p, double *train, Sint *class,
      |         ^~~~
      |         int
.
.
.
make: *** [C:/PROGRA~1/R/R-43~1.0/etc/x64/Makeconf:265: class.o] Error 1
ERROR: compilation failed for package 'class'

另一方面,安装类install.packages(“class”,version=“7.3-20”)没有问题。Rtools在renv包之外安装并工作正常。是否renv不支持当前的Rtools版本(43)?他们在github上仍然有一个开放的问题来修复对rtools 43(https://github.com/rstudio/renv/issues/1214)的支持。
感谢您的任何建议和帮助!

bzzcjhmw

bzzcjhmw1#

这与Rtools没有任何关系,这是一个与你正在尝试做的事情有关的问题。
install.packages()函数将忽略version参数,因此您将获得最新版本7.3-22。版本7.3-20与R 4.3.x不兼容,因为Sint和相关的定义已经被删除。
因此,如果你想安装7.3-20,你需要使用旧版本的R。

相关问题