在 Ubuntu 22.04 上更新到 R 4.4 后软件包安装出现编译错误

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

所以我刚刚更新到 R 4.4。我使用的是 Ubuntu 22.04,仅供参考。下一步是重新安装我的所有软件包。问题是,他们中的许多人都犯了同样的错误。例如,当尝试安装“vroom”时

install.packages("vroom")

安装软件包时,我像往常一样收到很长的文本,但它以错误结束:

cc1plus: some warnings being treated as errors
make: *** [/usr/lib/R/etc/Makeconf:202 : delimited_index.o] Error 1
ERROR: compilation failed for package ‘vroom’
* removing ‘/home/username/R/x86_64-pc-linux-gnu-library/4.4/vroom’

所以我明白这是 C++ 的编译错误。我对 C++ 一无所知。

我在网上发现了类似错误的人,遵循模式

make: *** [text] Error 1
,并且人们建议重新安装
Rcpp
软件包。我使用
install.packages()
功能完成此操作,并且安装没有任何问题。但我安装其他软件包(如
vroom
)的问题保持不变。

你知道如何解决这个问题吗?还是我只能卸载 R 并回到 4.3 ?

感谢您的宝贵时间

编辑:这是警告的样子。

/usr/lib/R/site-library/cpp11/include/cpp11/protect.hpp:337:42: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 5 has type ‘SEXP’ {aka ‘SEXPREC*’} [-Wformat=]
  337 |       REprintf("%x CAR: %x CDR: %x TAG: %x\n", head, CAR(head), CDR(head), TAG(head));
      |                                         ~^                                 ~~~~~~~~~
      |                                          |                                    |
      |                                          unsigned int                         SEXP {aka SEXPREC*}

据我所知,它们看起来都一样。唯一改变的是

protect.hpp:
之后的数字。参数 2 至 5 会出现警告。

r ubuntu-22.04
1个回答
0
投票

在 Debian Bookworm 下我也发生了同样的事情。我正在安装 vroom 来安装 tidyverse。这篇帖子帮助解决了这个问题,到目前为止它有效。

基本上,删除 /etc/R/Makeconf 文件中对“-Werror=format-security”的所有引用(您需要管理员权限)。保存并重新安装 vroom / tidyverse。

不过,我不能说这是否是一个关键问题,因此在安装后,我按原样恢复了 Makeconf 文件。

© www.soinside.com 2019 - 2024. All rights reserved.