docker java7 install fail

2022-09-01 09:26:42

我正在尝试通过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允许这个


答案 1

命令中的命令告诉“假设是”,这与在非交互模式下运行不同。-yapt-get installapt-get

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

ENV DEBIAN_FRONTEND noninteractive

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

至于你实际的错误,你是对的,是.尝试将命令放在命令之上。add-apt-repositorypython-software-propertiesapt-get update -yapt-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

请注意,您需要执行两个命令,一个在开始之前(始终是一个好习惯),另一个在添加oracle java PPA之后。apt-get update -y

apt-get manual

Docker ENV docs


答案 2

add-apt-repository命令是软件属性通用 pakage 的一部分。安装软件属性通用,而不是 python 软件属性。

然后,您可以添加 ppa:webupd8team 存储库。但仍然存在一个问题。

设置 accept-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

推荐