docker java7安装失败

时间:2014-07-29 15:31:03

标签: java docker

我正在尝试通过ppa(RUN add-apt-repository ppa:webupd8team / java -y)在我的docker镜像中安装java7,但它失败并出现此错误:

returned a non-zero code: 127

以下是建议正确安装的方法,但它无法正常工作。我也试过了两个ppas。

RUN  apt-get install python-software-properties -y
RUN  add-apt-repository ppa:webupd8team/java -y
#RUN add-apt-repository ppa:eugenesan/java -y
RUN apt-get update
RUN  apt-get install oracle-java7-installer -y

这是日志输出:

Step 28 : RUN  add-apt-repository ppa:webupd8team/java -y
 ---> Running in b278761a4209
 [91m/bin/sh: 1: add-apt-repository: not found
 [0m 

所以......我需要找出帮助器库中存在这个命令的位置或者是什么:

add-apt-repository

add-apt-repository似乎是python-software-properties安装的一部分。除了在构建的其他区域弹出的这些消息之外,我在该步骤中没有看到任何真正的错误。所以我假设如果我可以解决这个问题,前面提到的python步骤将根据需要安装:

    [91mdebconf: unable to initialize frontend: Dialog
     debconf: (TERM is not set, so the dialog frontend is not usable.)
     debconf: falling back to frontend: Readline
     [0m[91mdebconf: unable to initialize frontend: Readline
     debconf: (This frontend requires a controlling tty.)
     debconf: falling back to frontend: Teletype
     [0m[91mdpkg-preconfigure: unable to re-open stdin: 

因此。如何设置术语或对话框?我以为-y允许这个

4 个答案:

答案 0 :(得分:27)

-y命令中的apt-get install告诉apt-get"假设是",这与在非交互模式下运行相同

您正在看到"无法初始化前端:对话框"消息,因为Debian在交互模式下运行apt-get。要告诉它以非交互模式运行,请将此行添加到Dockerfile的开头:

ENV DEBIAN_FRONTEND noninteractive

现在您的命令将以非交互模式运行,因此apt-get不会尝试弹出任何对话框。

至于你的实际错误,你是对的,add-apt-respositorypython-software-properties的一部分。尝试将apt-get update -y命令放在apt-get install python-software-properties命令之上。

RUN apt-get update -y                             && \
    apt-get install python-software-properties -y && \
    add-apt-repository ppa:webupd8team/java -y    && \
    apt-get update -y                             && \
    apt-get install oracle-java7-installer -y     && \
    oracle-java7-set-default

注意,你需要做两个apt-get update -y命令,一个在你开始之前(总是一个好习惯进入),一个是在你添加了oracle java PPA之后。

apt-get manual

Docker ENV docs

答案 1 :(得分:13)

add-apt-repository命令是软件属性 - 常见包的一部分。安装software-properties-common,而不是python-software-properties。

然后你可以添加ppa:webupd8team存储库。但仍有问题。

设置accepted-oracle-license-v1-1并安装java。下面的示例Dockerfile将完美运行。

FROM ubuntu:14.04

RUN apt-get update
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:webupd8team/java -y
RUN apt-get update
RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections
RUN apt-get install oracle-java7-installer -y

答案 2 :(得分:0)

方式 #1

有人说这种方式不起作用,但我测试过它有效。

ENV DEBIAN_FRONTEND noninteractive

yes | apt-get install package-1 package-2

方式 #2

ENV DEBIAN_FRONTEND noninteractive

apt-get install -y package-1 package-2

答案 3 :(得分:-1)

我尝试了一些不同的东西但无济于事,所以我选择使用OpenJDK。这让我走过了这一步,直到下一个错误: - )。

# method 2
RUN apt-get install openjdk-7-jre -y