由于缺少 R_HOME var,无法在 Docker 图像中安装 XML R 包

Unable to install XML R package in Docker image due to missing R_HOME var

我有一个 docker 图像,它已经成功构建了几个月。但是,自 12 月 17 日以来,我 运行 遇到下面 Jenkins 控制台输出 中显示的错误。 docker 文件中没有任何变化,因此它显然与底层环境有关,我在 AWS EC2 上有一个 Jenkins 服务器 运行ning。奇怪的是所有其他包都安装正常,没有任何参考 R_HOME,只是 XML 包安装失败

我已经尝试按照 this thread 在 docker 文件中明确设置 R_HOME 但没有成功。

ENV R_HOME /usr/lib/R

詹金斯阶段

stage ('Build docker image') {
    steps {                
        dir ('DockerImage') {
            sh 'docker-compose build'
        }
    }
}

Jenkins 控制台输出

Step 17/20 : RUN R -e "install.packages('XML')"
 ---> Running in cfc007e0ce94
[91mERROR: R_HOME ('/usr/lib/R') not found

Docker文件

# Run executable JAR in Linux

FROM cardcorp/r-java

# Set R and jri PATH
ENV LD_LIBRARY_PATH "$LD_LIBRARY_PATH:/usr/bin/:/usr/lib/R/site-library/rJava/jri/"

# Install packages in R
RUN R -e "install.packages(c('data.table', 'Rcpp', 'zoo'))"
RUN R -e "install.packages('foreach')"
RUN R -e "install.packages('doParallel')"
RUN R -e "install.packages('signal')"
RUN R -e "install.packages('bitops')"
RUN R -e "install.packages('matlab')"
RUN R -e "install.packages('GENEAread')"
RUN R -e "install.packages('tuneR')"
RUN R -e "system('apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABC')"
RUN R -e "system('apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XYZ')"
RUN R -e "system('apt-get update && apt-get install -y gcc-8-base apt-transport-https')"
RUN R -e "system('apt-get install -y libxml2-dev')"
RUN R -e "install.packages('XML')"

编辑: 查看问题开始出现的时间戳,我发现有一个 Debian 版本与我的问题一致。我想知道是否可以在 Docker 文件

中指定要使用的 Debian 版本

就我而言,我将问题归结为 test -x 无法正常工作。 /usr/bin/R 脚本使用它来检查 /usr/lib/R 文件夹是否存在。

搜索此问题的解决方案让我看到了 Ubuntu 中的各种错误报告,但我设法通过升级 docker 版本解决了这个问题。我的 Docker 主机是 Centos,而不是大多数错误报告中的 Ubuntu,但是我的容器是基于 Ubuntu.

将 Docker 升级到以下软件包后一切又恢复正常了:

Upgraded:
  containerd.io-1.4.12-3.1.el8.x86_64
  docker-ce-3:20.10.12-3.el8.x86_64    
  docker-ce-cli-1:20.10.12-3.el8.x86_64  
  docker-scan-plugin-0.12.0-3.el8.x86_64

Installed:
  docker-ce-rootless-extras-20.10.12-3.el8.x86_64
  fuse-overlayfs-1.7.1-1.module_el8.5.0+890+6b136101.x86_64
  fuse3-3.2.1-12.el8.x86_64
  fuse3-libs-3.2.1-12.el8.x86_64
  libslirp-4.4.0-1.module_el8.5.0+890+6b136101.x86_64
  slirp4netns-1.1.8-1.module_el8.5.0+890+6b136101.x86_64

参见: