在Ubuntu 18.04上安装R包Boom 0.9失败

6

我无法在Ubuntu 18.04上安装Boom 0.9,但是可以顺利安装Boom 0.8。然而,我们需要0.9版本作为CausalImpact的前置依赖。

g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
/usr/lib/R/etc/Makeconf:176: recipe for target 'Models/Glm/PosteriorSamplers/fill_poisson_mixture_approximation_table_2.o' failed
make[1]: *** [Models/Glm/PosteriorSamplers/fill_poisson_mixture_approximation_table_2.o] Error 4
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/tmp/RtmpKl6J7B/R.INSTALL90e7ca998b2/Boom/src'
ERROR: compilation failed for package 'Boom'
* removing '/usr/local/lib/R/site-library/Boom'

The downloaded source packages are in
 '/tmp/RtmpIk7UFT/downloaded_packages'
Warning message:
In install.packages("Boom") : installation of one or more packages failed,
  probably 'Boom'

我确保安装的build-essential是最新的版本(也尝试了g++-8)。


你有多少内存? - duckmayr
这是 Docker 构建的一部分,正在运行于一个 TeamCity 构建代理中,该代理有可用的 25GB 内存(总共为 32GB)。 - kstorer
啊,没事了。我之前在内存较低的系统上遇到过这个问题,比如 https://github.com/tidyverse/dplyr/issues/2473 ,但我猜你的情况不是这个原因。 - duckmayr
3个回答

0

请查看:https://cran.r-project.org/web/checks/check_results_Boom.html

检查页面显示“GNU make”是未声明的SystemRequirement。

版本:0.9.1 检查:Makefile中的GNU扩展 结果:注意 GNU make是一个SystemRequirements。

由于您的安装过程似乎也在make[1]处失败,因此检查是否安装了GNU make可能是有意义的。


谢谢您的建议,GNU make已经安装好了。

make --version

GNU Make 4.1 适用于x86_64-pc-linux-gnu平台。
- kstorer
真可惜,那本来是一个简单的解决方案 :-) - Steffen Moritz
你可以下载该软件包0.8版本的旧源代码(https://cran.r-project.org/src/contrib/Archive/Boom/)并进行比较以查看更改...也许这可以提供一些线索。有点不幸的是,他们没有为该软件包提供变更日志或Github存储库。 - Steffen Moritz

0

我想你们组织中的其他人可能已经联系过我了。我们正在进行中间调试。

Boom是一个庞大的软件包,在构建时可能会超时。首先要检查的是您是否能够使用多个核心进行构建(即您可以将-j x标志传递给make)。

作为诊断,您可以尝试在不涉及R的情况下构建软件包。克隆https://github.com/steve-the-bayesian/BOOM并使用bazel(最新版本)或make(不太过时)进行构建。如果此构建成功,则比较传递给R构建与本地构建的标志。

为了更好地了解R失败的原因,请从CRAN下载Boom软件包https://cran.r-project.org/src/contrib/Boom_0.9.1.tar.gz,然后从命令行尝试以下操作 R CMD CHECK Boom_0.9.1.tar.gz

这可能会失败,但它将生成一个名为Boom.Rcheck的目录,其中包含一个名为00install.out的文件,其中包含所有编译器输出。

构建上面失败的可疑原因是poisson_mixture_approximation_table,这是一个可能会溢出您的堆栈的大文件。或者这只是巧合。


2
它最终与内存有关,我做了几件事来解决它。 1)我将我的笔记本电脑上的docker内存限制增加到8g,这样在本地运行时只需进行一次Boom安装即可(原来是2g)。这对于测试有所帮助,但并不是真正问题的解决方法。 2)在TeamCity代理上,docker有30g+可用,但构建仍会失败(这对我来说仍然很奇怪)。为了解决这个问题,我修改了docker文件,首先单独安装Boom,然后再安装其他软件包。 - kstorer

0

从源代码安装Boom包(也在Docker构建期间)可能因以下几个原因而失败:

  • 每个核心的内存不足
  • 堆栈大小不足
  • 构建过程超时(可能性较大)

我们目前正在使用以下Docker设置:

  • 核心:4
  • 内存:8GB

我们可以使用以下命令在开始安装之前将堆栈大小设置为16MB:

Docker:

RUN ulimit -s 16384 \
    && R -e 'install.packages("Boom");'

Linux:

ulimit -s 16384 \
    && R -e 'install.packages("Boom");'

注意:堆栈大小是与操作系统相关的配置,可能因使用的主机操作系统而异。

注意:安装boom包的命令可能因您的应用程序而异。例如,我们使用packrat。

类似问题:link


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接