当Docker基于R-Base Docker镜像构建时,Python软件包安装问题

时间:2018-10-10 21:57:29

标签: python r docker r-base

我想在基于r的docker映像中安装python。当我尝试这个:

FROM r-base:3.4.1
RUN apt-get update && apt-get install -y python3 

我收到错误消息:

Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

当我尝试这样做时:

FROM r-base:3.5.1
RUN apt-get update && apt-get install -y python3 

我收到错误消息:

The repository 'http://deb.debian.org/debian testing Release' does not have a Release file.

如果我从jupyter笔记本基础开始,我可以同时使用R和Python,但我确实希望此图像纤细,因此我想从r-base开始。请注意,USER root也不能解决这些问题。

1 个答案:

答案 0 :(得分:1)

这真的很奇怪,见此link

  

服务器deb.debian.org本身没有程序包,但是名称中有SRV记录,可以让DNS扩展并随后找到位置。

也许您的本地网络很特别,例如:

  

如果由于使用较旧的apt或由于使用不支持SRV记录的HTTP代理而直接访问deb.debian.org后面的服务器,则请求将HTTP重定向到CDN实例之一。如果要避免重定向,则可以直接选择一个实例。

因此,建议在Dockerfile中添加apt的直接来源,如下所示:

FROM r-base:3.5.1

RUN echo "deb http://cdn-fastly.deb.debian.org/debian stable main" > /etc/apt/sources.list && \
  echo "deb http://cdn-fastly.deb.debian.org/debian-security stable/updates main" >> /etc/apt/sources.list && \
  rm -fr /etc/apt/apt.conf.d/default && \
  apt-get update && apt-get install -y python3

如果您有代理人,也请在ENV http_proxy "http://your_proxy"中添加Dockerfile之类的内容,希望对您有所帮助。