Docker 无法构建我的 R 包 - 无法安装 R 依赖项

问题描述 投票:0回答:0

我之前的R项目突然无法编译成Docker镜像了。问题可能与 Docker hub R 基础镜像的最新更新有关

https://github.com/rstudio/r-docker

用于构建我的 R API 解决方案的 Dockerfile 片段:

FROM rstudio/r-base:4.1.0-focal
COPY api/renv.lock /package/api/renv.lock
RUN R -e "utils::install.packages(c('renv'), repo='https://cloud.r-project.org/')"
RUN R -e "renv::consent(provided=TRUE)"
RUN R -e "renv::restore(lockfile = '/package/api/renv.lock', \
repos = c(RSPM = 'https://packagemanager.rstudio.com/all/latest'))"

具体来说,R 包

sodium
gert
odbc
以及其他可能无法正确安装并破坏 Docker 构建操作:

523.7 - 正在安装 zip ... OK [已安装二进制文件并在 0.41 秒内缓存] 524.1 - 安装 gert ... 失败 524.5 /opt/R/4.1.3/lib/R/bin/R --vanilla -s -f '/tmp/RtmpViVzDK/renv-install-7407e83e3' 524.5 =================================================== =============================== 524.5 524.5 错误:dyn.load(file, DLLpath = DLLpath, ...) 中的“gert”的包或命名空间加载失败: 524.5 无法加载共享对象'/opt/R/4.1.3/lib/R/library/.renv/1/gert/libs/gert.so': 524.5 libgit2.so.28:无法打开共享对象文件:没有这样的文件或目录 524.5 执行停止 524.5 524.5 错误:测试“gert”是否可以加载时出错 [错误代码 1]

三周前一切正常,我这边没有任何代码更改。有什么想法吗?

编辑/临时修复:将以下内容添加到 Dockerfile 即可构建映像 - 但为什么基础映像中突然缺少这些依赖项?下面的列表是一个迭代故障排除过程,其中所需的 R 包

sodium
odbc
gert
lava
waldo
无法安装。

RUN apt-get update --fix-missing -qq && apt-get install -y -q \
       libsodium-dev \
       libssl-dev \
       libcurl4-gnutls-dev \
       libgit2-dev \
       unixodbc-dev\
       unixodbc \
       odbcinst1debian2 \
       odbcinst \
    && apt-get clean \
    && apt-get purge \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
r docker cran renv
© www.soinside.com 2019 - 2024. All rights reserved.