Unable to install some R packages in Ubuntu 20.04 because of internal compiler error: Segmentation fault
Unable to install some R packages in Ubuntu 20.04 because of internal compiler error: Segmentation fault
我最近在 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
,这也没有帮助。
我的目标是在不抛出这些编译器错误的情况下安装上述软件包。任何帮助将不胜感激。
以防将来其他人也 运行 遇到此问题,我将发布 https://answers.launchpad.net/ubuntu. Here is the link to the question I posted: https://answers.launchpad.net/ubuntu/+question/696623 向我建议的解决方案。
问题原来是 R 使用 gcc-9 而不是 gcc-10 来编译包。旧版本的 gcc 抛出错误。以下是我为解决问题所采取的步骤:
- 安装 gcc-10,它在我的系统上不可用:
sudo apt install gcc-10
。
/usr/lib/R/etc/Makeconf
文件中的- Edit the CC= pointer到gcc-10:打开终端,输入
sudo nano /usr/lib/R/etc/Makeconf
并将当前的CC=
替换为CC=gcc-10
。保存文件。
- 重新启动 R 并 运行 那些未正确编译的包的
install.packages()
命令。
编辑: 请参阅下面的评论进行讨论。上述步骤解决了问题,但不推荐。该问题与 R 在调用 install.packages()
时未使用系统包管理器安装包有关。
安装包 bspm
解决了我的问题。 here 为那些好奇的人讨论了这个包及其实用程序。
要在R中使用install.packages()
,bspm
有两种使用方式:
bspm::enable()
在 R 内然后 install.packages()
- 如其文档中所写:要默认在系统范围内启用
bspm
,请在 Rprofile.site
文件中包含以下内容:suppressMessages(bspm::enable())
。
非常感谢德克的指导。
我最近在 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
,这也没有帮助。
我的目标是在不抛出这些编译器错误的情况下安装上述软件包。任何帮助将不胜感激。
以防将来其他人也 运行 遇到此问题,我将发布 https://answers.launchpad.net/ubuntu. Here is the link to the question I posted: https://answers.launchpad.net/ubuntu/+question/696623 向我建议的解决方案。
问题原来是 R 使用 gcc-9 而不是 gcc-10 来编译包。旧版本的 gcc 抛出错误。以下是我为解决问题所采取的步骤:
- 安装 gcc-10,它在我的系统上不可用:
sudo apt install gcc-10
。 - Edit the CC= pointer到gcc-10:打开终端,输入
sudo nano /usr/lib/R/etc/Makeconf
并将当前的CC=
替换为CC=gcc-10
。保存文件。 - 重新启动 R 并 运行 那些未正确编译的包的
install.packages()
命令。
/usr/lib/R/etc/Makeconf
文件中的编辑: 请参阅下面的评论进行讨论。上述步骤解决了问题,但不推荐。该问题与 R 在调用 install.packages()
时未使用系统包管理器安装包有关。
安装包 bspm
解决了我的问题。 here 为那些好奇的人讨论了这个包及其实用程序。
要在R中使用install.packages()
,bspm
有两种使用方式:
bspm::enable()
在 R 内然后install.packages()
- 如其文档中所写:要默认在系统范围内启用
bspm
,请在Rprofile.site
文件中包含以下内容:suppressMessages(bspm::enable())
。
非常感谢德克的指导。