由于缺少 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
参见:
我有一个 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
参见: