r语言 - 从源安装软件包失败 - Dockerfile



我正在尝试从源代码安装一些软件包(包括我创建的软件包,这些软件包在 R 控制台甚至 R CMD 安装时安装正常。

但是,在使用 docker 文件构建 docker 映像时。我在 docker 文件中的这一行收到此错误

RUN R -e 'install.packages("RcppDIUtilsPackage_1.0.tar.gz",repos=NULL,type="source")'

我还尝试了许多其他命令R CMD INSTALL包括除了在 docker 映像构建中之外都可以正常工作地安装软件包。

这是我遇到的错误。

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning: invalid package ‘RcppDIUtilsPackage_1.0.tar.gz’
Error: ERROR: no packages specified
Warning message:
In install.packages("RcppDIUtilsPackage_1.0.tar.gz", repos = NULL,  :
  installation of package ‘RcppDIUtilsPackage_1.0.tar.gz’ had non-zero exit status

谢谢!!

编辑:Dockerfile

FROM rocker/r-ver:3.4.4
WORKDIR /home/ubuntu/projects/DService
RUN apt-get update -qq && apt-get install -y 
  libssl-dev 
  libcurl4-gnutls-dev
RUN R -e "install.packages('plumber')"
RUN R -e "install.packages('Rcpp')"
RUN R -e 'install.packages("RcppDIUtilsPackage_1.0.tar.gz",repos=NULL,type="source")'
COPY / /
EXPOSE 8000
CMD ["Rscript", "DService.R"]
command: sudo docker build --no-cache -t dservice-docker-image .

这是您问题的间接解决方案,因为我无法解决相同的问题。

问题的根源可能与从 Dockerfile 创建 Docker 映像的主机环境有关。具体而言,启动以安装本地包的 R 实例可能无法访问存储本地包的路径。

对我来说,解决方案是避免本地包。将任何本地存储库移动到远程存储库,并改为在 Dockerfile 中引用它们。例如

RUN R -e "devtools::install_github('dmanuge/shinyFilesWidget') ; system('echo 14')"

之后,重新生成 Docker 映像并相应地运行它。虽然这不是一个直接的解决方案,但我达到了调试的关键阈值,需要继续前进。:)