Rscript安装程序包:如何使它失败并显示错误代码?

问题描述 投票:1回答:1

我正在用R构建docker容器,其行类似:

RUN Rscript -e 'install.packages("tidyverse", "text2vec")'

但是,如果安装其中一个软件包失败,甚至认为已记录“ ...具有非零退出状态”,则docker构建将继续进行。

如果install.packages安装其中一个软件包时出错,如何使Rscript失败并显示错误代码?

r docker tidyverse cran
1个回答
1
投票

您可以在调用install.packages之后,在下面创建R脚本(myScript.R)以测试您的任何软件包在调用库函数时是否出错。如果是,则程序退出并显示错误代码。

#!/usr/bin/env Rscript

packages = commandArgs(trailingOnly=TRUE)

for (l in packages) {

    install.packages(l, dependencies=TRUE, repos='https://cran.rstudio.com/');

    if ( ! library(l, character.only=TRUE, logical.return=TRUE) ) {
        quit(status=1, save='no')
    }
}

用于使用Docker测试脚本:

ADD myScript.R /

RUN Rscript myScript.R tidyverse text2vec

此答案是从这里(how do I make install.packages return an error if an R package cannot be installed?)获得的。解决了安装软件包失败时返回错误的相同问题,但没有docker。

另一个可能的解决方案是使用installed.packages,以测试您的软件包是否已成功安装。

© www.soinside.com 2019 - 2024. All rights reserved.