我最近在 Ubuntu 20.04.2 LTS 上安装了 R 版本 4.0.5 (2021-03-31)。 R 按预期工作。
然而,虽然有些软件包安装没有问题(例如,R.matlab
),但仍有一些软件包无法安装。例如,运行 install.packages("data.table")
会引发以下错误:
* installing *source* package ‘data.table’ ...
** package ‘data.table’ successfully unpacked and MD5 sums checked
** using staged installation
gcc -std=gnu99 9.3.0
zlib 1.2.11 is available ok
R CMD SHLIB supports OpenMP without any extra hint
** libs
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fopenmp -fpic -g -O2 -fdebug-prefix-map=/build/r-base-tRgc13/r-base-4.0.5=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c assign.c -o assign.o
during GIMPLE pass: ccp
assign.c: In function ‘memrecycle’:
assign.c:1205:1: internal compiler error: Segmentation fault
1205 | }
| ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-9/README.Bugs> for instructions.
make: *** [/usr/lib/R/etc/Makeconf:172: assign.o] Error 1
ERROR: compilation failed for package ‘data.table’
我在其他软件包安装尝试中遇到了类似的错误(即“内部编译器错误”),但输出略有不同。例如,install.packages("xfun")
抛出以下错误,为简洁起见被截断:
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fdebug-prefix-map=/build/r-base-tRgc13/r-base-4.0.5=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c base64.c -o base64.o
during GIMPLE pass: ccp
base64.c: In function ‘base64_decode_impl’:
base64.c:237:1: internal compiler error: Segmentation fault
237 | }
| ^
我尝试重新安装 gcc-9,但没有帮助。我发现 Sys.getenv("PATH")
中的 PATH 指向我系统上的 miniconda3 安装,因此将其更新为 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/rstudio/bin/postback
,这也没有帮助。
我的目标是在不抛出这些编译器错误的情况下安装上述软件包。任何帮助将不胜感激。
答案 0 :(得分:1)
如果其他人将来也遇到此问题,我将发布https://answers.launchpad.net/ubuntu 向我建议的解决方案。这是我发布的问题的链接:https://answers.launchpad.net/ubuntu/+question/696623。
问题是 R 使用 gcc-9 而不是 gcc-10 来编译包。旧版本的 gcc 抛出错误。以下是我为解决问题所采取的步骤:
sudo apt install gcc-10
。/usr/lib/R/etc/Makeconf
文件中的 sudo nano /usr/lib/R/etc/Makeconf
并将当前的 CC=
替换为 CC=gcc-10
。保存文件。install.packages()
命令。编辑:请参阅下面的评论进行讨论。上述步骤解决了问题,但不推荐。该问题与 R 中使用 install.packages()
调用时未使用系统包管理器安装包有关。
安装包 bspm
为我解决了这个问题。 here 为那些好奇的人讨论了这个包及其实用程序。
要在 R 中使用 install.packages()
,可以通过两种方式使用 bspm
:
bspm::enable()
在 R 中,然后是 install.packages()
bspm
,请包含以下内容:suppressMessages(bspm::enable())
到 Rprofile.site
文件中。非常感谢德克的指导。