如何在 alpine 中安装 R 3.4.4

Har*_*tan 4 r dockerfile alpine-linux

我正在尝试在我的 docker 高山映像中安装 R。早些时候我确实使用

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9 \ && add-apt-repository 'deb [arch=amd64,i386] https://cran.rstudio.com/bin/linux/ubuntu xenial/' \ && apt-get update \ && apt-get install -y r-base

我无处可找到如何在 alpine 中安装它。任何帮助,将不胜感激。

我的基本图像是 python:3.7-alpine

val*_*ano 5

R 在 Alpine 社区存储库中可用,因此只需安装正确的软件包

apk add R

对于更紧凑的图像alpine:3.9,如果您不需要 Python,您可以从普通的 Alpine 图像开始,例如。

Alpine 上可用的最新 R 版本是 3.5.1。最接近 3.4.4 的是 3.4.2,它在 Alpine V3.7 中可用。在这种情况下,从 Alpine V3.7 开始:

$ docker run -it alpine:3.7 
/ # apk add R
Run Code Online (Sandbox Code Playgroud)

如果您完全需要 R 版本 3.4.4,则可能必须从源代码构建它。幸运的是,Artem Klevtsov 提供了一个出色的现成 Dockerfile,它可以做到这一点:https :
//github.com/artemklevtsov/r-alpine/blob/master/release/Dockerfile

只需将 R 版本字符串替换为 3.4.4 并构建映像 - 效果很好。

编辑:

使用特定 R 版本的另一个选项是在 Alpine 容器上启用glibc支持,该版本不适用于本机 Alpine 。

通常,Alpine 构建在musl libc之上,它是一个专门的libc实现,通常与 glibc 不兼容,glibc 是大多数其他 Linux 发行版使用的事实上的标准 libc。安装 glibc 后,您应该能够在 Alpine 容器上运行任何通用 R Linux 构建。

以下 Dockerfile 部分将启用 glibc 支持,为 Alpine 容器大小增加约 10MB:

# Based on: https://github.com/anapsix/docker-alpine-java
FROM alpine:3.7

ENV GLIBC_REPO=https://github.com/sgerrand/alpine-pkg-glibc
ENV GLIBC_VERSION=2.28-r0

RUN set -ex && \
    apk --update add libstdc++ curl ca-certificates && \
    for pkg in glibc-${GLIBC_VERSION} glibc-bin-${GLIBC_VERSION}; \
        do curl -sSL ${GLIBC_REPO}/releases/download/${GLIBC_VERSION}/${pkg}.apk -o /tmp/${pkg}.apk; done && \
    apk add --allow-untrusted /tmp/*.apk && \
    rm -v /tmp/*.apk && \
    /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib
Run Code Online (Sandbox Code Playgroud)