Docker中RUN指令安装tidyverse失败,提示非零退出状态
解决Docker中安装tidyverse依赖失败的问题
问题原因
报错中的systemfonts、textshaping、ragg均为编译型R包,依赖底层系统的字体/图形处理库,Docker基础镜像默认未预装这些库,导致R包编译安装失败,进而无法完成tidyverse的安装。
解决方案
在安装R包前,先通过系统包管理器安装所需的底层依赖库,再执行R包安装命令。
针对Debian/Ubuntu系基础镜像(如rocker/r-ver、debian:latest)
在Dockerfile中添加系统依赖安装步骤:
# 更新包列表并安装依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ fontconfig \ libfreetype6-dev \ libpng-dev \ libharfbuzz-dev \ libfribidi-dev \ && rm -rf /var/lib/apt/lists/*
完整Dockerfile示例
FROM rocker/r-ver:4.3.1 # 安装系统依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ fontconfig \ libfreetype6-dev \ libpng-dev \ libharfbuzz-dev \ libfribidi-dev \ && rm -rf /var/lib/apt/lists/* # 安装tidyverse RUN R -e "install.packages(c('tidyverse'), repos='http://cran.rstudio.com/')"
针对Alpine系基础镜像
若使用Alpine作为基础镜像,替换为apk命令安装依赖:
RUN apk add --no-cache \ fontconfig-dev \ freetype-dev \ libpng-dev \ harfbuzz-dev \ fribidi-dev
内容的提问来源于stack exchange,提问作者Aryan Bharti
相关产品推荐
相关产品推荐

