我正在编写一个Dockerfile,想知道如何正确添加带有预编译的r包的ppa。 我的以下代码给出了错误消息:
阅读包裹清单......
W:存储库' http://ppa.launchpad.net/marutter/c2d4u/ubuntu cosmic Release'没有发布文件。
E:无法获取http://ppa.launchpad.net/marutter/c2d4u/ubuntu/dists/cosmic/main/binary-amd64/Packages 404未找到
E:某些索引文件无法下载。它们被忽略了,或者使用了旧的。
我不明白为什么他找不到它,虽然我可以找到发布文件here。
我的基本图片是postgres,您可以将其拉为
docker pull postgres
我在添加PPA后调用RUN apt-get update
时遇到错误:
# Load base image
FROM postgres
RUN apt-get update && \
apt-get install -y software-properties-common && \
apt-get install -y apt-transport-https
RUN apt-get update
RUN apt-get install -y wget
# More stuff here
RUN apt-get install -y r-base r-base-dev
# add cran mirror
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
RUN echo "deb-src https://cran.rstudio.com/bin/linux/ubuntu xenial/" | tee -a /etc/apt/sources.list
# add PPA with pre-compiled cran packages
RUN add-apt-repository -y ppa:marutter/c2d4u
# install some R packages
RUN apt-get update
RUN apt-get install -y r-cran-data.table
RUN apt-get install -y r-cran-tidyverse
如果我不打电话RUN apt-get update
他找不到tidyverse
(但找到data.table
)
答案 0 :(得分:1)
基本问题是postgres
图像基于Debain稳定,而您尝试添加适用于Ubuntu的图像。我看到了三种可能的方法:
尽可能通过postgres
图像使用Debian稳定版,并从源代码安装缺少的tidyverse软件包。
通过postgres
图像将Debian稳定与R 3.5的CRAN反向端口一起使用,并从源代码编译所有包
使用Ubuntu图片和c2d4u(例如https://hub.docker.com/r/rocker/r-apt/)并在其上添加postgres。
答案 1 :(得分:1)
我相信你的Docker文件中有拼写错误。
RUN echo "deb-src https://cran.rstudio.com/bin/linux/ubuntu xenial/" | tee -a /etc/apt/sources.list
应该是
RUN echo "deb-src https://cran.rstudio.com/bin/linux/ubuntu/xenial/" | tee -a /etc/apt/sources.list
这会解决您的问题吗?