首页 > 解决方案 > R在docker容器中没有调用包

问题描述

我有一个 docker 映像,我使用以下几行安装了几个软件包:

FROM rocker/verse:4.0.3
... (some other installation details)
RUN install2.r --error \
    glmnet \
    ineq
    ...

但是,在从该映像运行容器时,我偶尔会收到错误消息,其中 R 似乎找不到该包:

Error in library(ineq) : there is no package called 'ineq'

如果我创建容器的新版本并手动打开 R 并运行它,我将永远无法重现此错误。有谁知道我该如何解决这个问题(或者我应该寻找什么来重现这个问题)?

标签: rdockerinstallationpackage

解决方案


击中相同的“奇怪”行为..

我的解决方法是(我知道它不优雅)使用 pacman 而不是库行。如果 pacman 找不到它只是安装它的库,它会做什么。这显然是粗鲁和反容器模式,但在某些时候我们需要继续前进:-/.. 这里的一个很大缺点是,如果容器丢失所有包并开始重新安装,容器启动时间可能会很长他们

if(!require("pacman")) install.packages("pacman")
pacman::p_load("glmnet","ineq")

推荐阅读