安装Rcpp时编译失败

问题描述 投票:1回答:1

我正在运行具有8GB RAM,Debian 9,R版本3.3的虚拟机。

我有这个R脚本。

install.packages("Rcpp")

我的机器给我这个错误。

* installing *source* package ‘Rcpp’ ...
** package ‘Rcpp’ successfully unpacked and MD5 sums checked
** libs
g++ -I/usr/share/R/include -DNDEBUG -I../inst/include/     -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-3.3.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c api.cpp -o api.o
In file included from ../inst/include/RcppCommon.h:135:0,
                 from ../inst/include/Rcpp.h:27,
                 from api.cpp:24:
../inst/include/Rcpp/lang.h: In function ‘SEXPREC* Rcpp::Rcpp_list7(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)’:
../inst/include/Rcpp/lang.h:45:55: error: ‘Rf_list6’ was not declared in this scope
     x0 = Rf_cons(x0, Rcpp_list6(x1, x2, x3, x4, x5, x6));
                                                       ^
../inst/include/Rcpp/lang.h: In function ‘SEXPREC* Rcpp::Rcpp_lang7(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)’:
../inst/include/Rcpp/lang.h:53:56: error: ‘Rf_list6’ was not declared in this scope
     x0 = Rf_lcons(x0, Rcpp_list6(x1, x2, x3, x4, x5, x6));
                                                        ^
/usr/lib/R/etc/Makeconf:141: recipe for target 'api.o' failed
make: *** [api.o] Error 1
ERROR: compilation failed for package ‘Rcpp’
* removing ‘/home/chris/R/x86_64-pc-linux-gnu-library/3.3/Rcpp’

The downloaded source packages are in
        ‘/tmp/RtmppHiNzX/downloaded_packages’
Warning message:
In install.packages("Rcpp") :
  installation of package ‘Rcpp’ had non-zero exit status

我需要安装此软件包。为什么不起作用?

r rcpp
1个回答
6
投票

您正在运行R 3.3。* –大约是四年前制作的主要发行版本,现在已经过时了-您正在尝试安装本周发布的Rcpp 1.0.4。不匹配。

R 3.3。*不再在CRAN中检查,这是在预发行版本中漏掉此错误的方式。因此,您应该考虑进行升级-CRAN甚至有向后移植,为您的发行版提供了Debian二进制文件。或者,如果您更喜欢R 3.3。*之类的旧软件,也可以使用四年前的Rcpp版本。要求混合和匹配对所有组合都有效是一个难题。

[现在,构建问题已在issue ticket #1048 at the repo中进行了讨论-相关issue #1053影响了另一个软件包。所有这些都已在closed PR tab中记录的PR中得到解决。因此,现在您可以从常规Rcpp'drat'存储库中通过[]访问新的临时版本,当前为Rcpp 1.0.4.3。

install.packages("Rcpp", repos="https://rcppcore.github.io/drat")

[Rcpp FAQ所指向的rcpp-devel mailing list,软件包DESCRIPTION文件和许多其他地方已经讨论了所有这些。

简而言之,Rcpp 1.0.4已针对所有CRAN参考平台进行了广泛的测试(但这不包括您仍然选择运行的过时的R 3.3。*。同样,我们对所有1800多个CRAN软件包运行完全反向依赖检查-但仅在Linux上。这需要我几天。但这一次我们被一个反向依赖问题仅影响macOS

所困扰。为此,我们需要macOS用户的测试帮助。

类似地,似乎一个BioConductor包装也有问题(与您的相似)。为此,如果BioConductor用户可以帮助进行测试,那就太好了。

发布前一周,我们制作了pre-release available and asked for testing help。这些错误本来可以捕获的,但需要更多的人参与[[并实际测试

预发行版本。总结:如果您想在本周发布Rcpp 1.0.4之类的CRAN软件包,那么最好使用(至少合理地)R版本,最好是在当前最新的OS版本中使用因为这些将获得最佳的测试覆盖率。像您运行的这样的更奇特的组合可能会像往常一样被咬。我们尽力避免这种情况,但仅靠我们自己无法测试所有组合。随时欢迎您的帮助!

编辑:sudo apt-get install r-cran-rcpp当然会为您安装保证工作的Rcpp版本时,请不要添加。您的发行版中的一个。您遇到的困难归因于您正在运行的old Debian(大概出于稳定性原因)和

new

Rcpp。如果稳定性至高无上,请使用发行版中包含的Rcpp。
© www.soinside.com 2019 - 2024. All rights reserved.