使用 docker 文件从源安装 R 包

Installing R package from source using docker file

我正在尝试使用 docker 文件从源代码安装 r 包。就像在这里看到的那样(为简单起见使用 ggplot2)

FROM rocker/r-ver

COPY . /usr/local/src/myscripts
WORKDIR /usr/local/src/myscripts

RUN R -e 'install.packages("ggplot2_3.0.0.tar.gz", repos = NULL, type = "source")'

CMD ["Rscript", "run.R"]

构建图像后出现此错误

> install.packages("ggplot2_3.0.0.tar.gz", repos = NULL, type = "source")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
ERROR: dependencies ‘digest’, ‘gtable’, ‘lazyeval’, ‘plyr’, ‘reshape2’, 
‘rlang’, ‘scales’, ‘tibble’, ‘viridisLite’, ‘withr’ are not available for 
package ‘ggplot2’
* removing ‘/usr/local/lib/R/site-library/ggplot2’
Warning message:
In install.packages("ggplot2_3.0.0.tar.gz", repos = NULL, type = "source") 
:>
> installation of package ‘ggplot2_3.0.0.tar.gz’ had non-zero exit status

可以看到docker文件夹中包含的文件here

有谁知道我需要在 docker 文件中添加什么来解决(如果可能)这个错误?

由于您设置了 repos = NULL,因此您需要先安装所有提到的依赖项,然后再安装 它们的 依赖项。您可以手动执行此操作,但弄清楚所有依赖项会很麻烦,并且每次更新都会发生变化。

因此最好使用本地包管理器。我对其中任何一个都没有个人经验,但你可以 {miniCRAN} 试一试。