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

returned a non-zero code: 127

以下是正确安装的建议方法,但它不起作用。我也尝试过这两种ppa。

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 允许这样做

有帮助吗?

解决方案

-y 在你的 apt-get install 命令在告诉我们 apt-get “假设是”,这与在非交互模式下运行不同。

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

ENV DEBIAN_FRONTEND noninteractive

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

至于你的实际错误,你是对的, add-apt-respository 是的一部分 python-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 手册

Docker ENV 文档

其他提示

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

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

设置已接受的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
.

我尝试了一些不同的东西,无济于事,所以我去了OpenJDK。这让我越过了这个步骤和下一个错误: - )。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top