我正在用R构建docker容器,其行类似:
RUN Rscript -e 'install.packages("tidyverse", "text2vec")'
但是,如果安装其中一个软件包失败,甚至认为已记录“ ...具有非零退出状态”,则docker构建将继续进行。
如果install.packages
安装其中一个软件包时出错,如何使Rscript失败并显示错误代码?
您可以在调用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,以测试您的软件包是否已成功安装。