验证安装在Docker容器中的R软件包

彼得根斯勒

有没有人有验证R软件包是否已安装到Docker容器的最佳实践?我想将我的容器设置为在CI服务上运行,并验证是否安装了我的软件包,但是由于我是在本地构建它的,因此日志似乎很难确定安装了哪些软件包,哪些没有安装。最好是让CI服务为我这样做,或者使用简单的批处理脚本来验证软件包是否已安装。

以下是我当前的dockerfile:

FROM rocker/tidyverse:latest
RUN mkdir -p $HOME/.R
COPY R/Makevars /root/.R/Makevars

RUN apt-get update -qq \
    && apt-get -y --no-install-recommends install \
    liblzma-dev \
    libbz2-dev \
    ed \
    clang  \
    ccache \
    default-jdk \
    default-jre \
    && R CMD javareconf \
    && install2.r --error \
        ggstance ggrepel \
        rstan shinystan rstanarm \
        ###My pkgs
        tidytext janitor corrr officer devtools pacman
        tidyquant timetk tibbletime sweep broom prophet \
        forecast prophet lime sparklyr rsparkling \
        formattable httr rvest xml2 jsonlite \
        textclean ggthemes naniar \
    && Rscript -e 'devtools::install_github(c("hadley/multidplyr","jeremystan/tidyjson","ropenscilabs/skimr"))' \
    && rm -rf /tmp/downloaded_packages/ /tmp/*.rds \
    && rm -rf /var/lib/apt/lists/*
hrbrmstr

保存到类似的东西package_check.R,然后有一个Docker行通过Rscript以下方式运行它

c("tidytext", "janitor", "corrr", "officer", "devtools", "pacman", "tidyquant", 
  "timetk", "tibbletime", "sweep", "broom", "prophet", "forecast", "prophet", 
  "lime", "sparklyr", "rsparkling", "formattable", "httr", "rvest", "xml2", 
  "jsonlite", "textclean", "ggthemes", "naniar") -> chk_pkgs

suppressPackageStartupMessages(
  sapply(chk_pkgs, require, character.only=TRUE, quietly=FALSE, warn.conflicts=FALSE)
) -> ret

missing_pkgs <- sort(names(which(ret == FALSE)))

if (length(missing_pkgs) > 0) {
  warning("The following packages are not installed: %s", 
          paste0(sprintf("  - %s", missing_pkgs), collapse="\n"))
}

quit(save=FALSE, status=length(names) == 0, runLast = FALSE)

这将为您提供缺少列表的缺少包错误,并以非零退出状态退出脚本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

安装在conda中找不到的软件包

是否可以在Docker中安装gopkg.in软件包?

在Docker容器中安装Golang外部软件包

如何将新软件包安装到非根Docker容器中?

无法在Docker映像中安装R软件包

R软件包不会安装在Jupyter Notebook中,但会安装在RStudio和R app中

R中的MXNet软件包安装

检查npm软件包是否通过终端安装在package.json中

将docker-compose.yml中的软件包安装到docker容器中

在Docker文件中安装python软件包

Docker容器在启动时将新软件包安装在requirements.txt中

防止重复安装软件包,或在R中预先安装软件包

由于从https://pypi.python.org/simple/返回的“ Move Permanently”错误,`pip`无法在Docker容器中安装软件包。

Docker容器中缺少python软件包

无法在Docker容器中安装任何python软件包

无法在Docker容器中使用chcolatey安装软件包

无法在R中安装软件包

Docker中的PECL软件包安装失败

无法将Python软件包安装在Docker容器中

Ubuntu安装在“正在安装'grub2'软件包...”中挂起。

真正安装在(K)ubuntu中的软件包

如何将安装在软件包树之外的软件包文件.deb文件放入正常的软件包树中?

查看安装在阴谋沙箱中的软件包的文档

使软件包明确安装在pacman中

在Docker映像中重复安装软件包

如何在Docker Ubuntu容器中安装软件包?

无法在Docker容器中安装软件包

如何列出其二进制文件安装在 $GOBIN 中的软件包?

软件包安装在 docker 中,但实际命令提供异常