【问题标题】:docker java7 install faildocker java7安装失败
【发布时间】:2014-07-29 15:31:02
【问题描述】:

我正在尝试在我的 docker 映像中通过 ppa (RUN add-apt-repository ppa:webupd8team/java -y) 安装 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 允许这样做

【问题讨论】:

    标签: java docker


    【解决方案1】:

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

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

    ENV DEBIAN_FRONTEND noninteractive
    

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

    至于你的实际错误,你是对的,add-apt-repositorypython-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

    【讨论】:

    • 不用担心 - 享受 docker!
    • 是的,到目前为止很喜欢。我已经向一些同行展示了它,他们也喜欢它。如果我能完成这个峰值,它可能会取代我们目前的流浪解决方案。
    • 我发现我还需要来自askubuntu.com/a/190674 的这两行代码: RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections RUN echo debconf shared/accepted-oracle-license-v1-1 看到 true | debconf-set-selections
    【解决方案2】:

    add-apt-repository 命令是 software-properties-common 包的一部分。安装 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
    

    【讨论】:

    • 接受的答案对这个确切的问题没有帮助。我很高兴我尝试了你的解决方案。像魅力一样工作。
    • 对我来说,安装 software-properties-common 没有用,但从上面的答案安装 python-software-properties 可以。
    • 为我工作:回显密码 | mysqlrouter --bootstrap xxxxxxxxxx
    【解决方案3】:

    方式#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
    

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2023-01-11
      • 2022-07-21
      • 2017-02-08
      相关资源
      最近更新 更多