【问题标题】:How to install oracle-java8-installer on docker debian:jessie如何在 docker debian:jessie 上安装 oracle-java8-installer
【发布时间】:2018-06-26 08:13:39
【问题描述】:

我正在尝试通过 oracle-java8-installer 在 debian:jessie docker 容器上安装 java 8。以下是我的 Dockerfile:

FROM debian:jessie

ENV JAVA_VERSION 1.8.0

RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" > /etc/apt/sources.list.d/webupd8team-java.list
RUN echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" >> /etc/apt/sources.list.d/webupd8team-java.list
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
RUN echo "debconf shared/accepted-oracle-license-v1-1 select true" | /usr/bin/debconf-set-selections
RUN apt-get update
RUN apt-get install -y --force-yes vim
RUN apt-get install -y --force-yes oracle-java8-installer

然而这给出了:

Connecting to download.oracle.com (download.oracle.com)|23.63.224.171|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-01-17 12:31:05 ERROR 404: Not Found.

download failed
Oracle JDK 8 is NOT installed.
dpkg: error processing package oracle-java8-installer (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 oracle-java8-installer
E: Sub-process /usr/bin/dpkg returned an error code (1)
The command '/bin/sh -c apt-get install -y --force-yes oracle-java8-installer' returned a non-zero code: 100

我发现网上描述了许多类似的问题,但没有一个建议的解决方案对我有用。有什么想法吗?

【问题讨论】:

  • 我没有使用 docker 的相关经验,但是我使用 Debian 有一段时间了,你从 Debian 上的 ubuntu 存储库安装一个包对我来说看起来不太好。当我需要安装 Oracle JDK 时,我从 Oracle 站点下载它并使用 java-package 创建一个 .deb 文件,如 here 所述。

标签: docker java-8 debian debian-jessie


【解决方案1】:

https://hub.docker.com/r/anapsix/docker-oracle-java8/~/dockerfile/找到解决方案:

## JAVA INSTALLATION
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" > /etc/apt/sources.list.d/webupd8team-java-trusty.list
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes --no-install-recommends oracle-java8-installer && apt-get clean all

你要找的“秘方”是第一行:

RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections

【讨论】:

  • 命令 '/bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes --no-install-recommends oracle-java8-installer && apt -get clean all' 返回一个非零代码:100
【解决方案2】:

关于 donhector 的回复和您的问题:您需要替换安装程序文件中的字符串,而不是您的最后一个命令:

apt-get install -y --force-yes oracle-java8-installer

运行这些命令:

apt-get -y install oracle-java8-installer || true
cd /var/lib/dpkg/info

sed -i 's|JAVA_VERSION=8u151|JAVA_VERSION=8u162|' oracle-java8-installer.*
sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/|' oracle-java8-installer.*
sed -i 's|SHA256SUM_TGZ="c78200ce409367b296ec39be4427f020e2c585470c4eed01021feada576f027f"|SHA256SUM_TGZ="68ec82d47fd9c2b8eb84225b6db398a72008285fafc98631b1ff8d2229680257"|' oracle-java8-installer.*
sed -i 's|J_DIR=jdk1.8.0_151|J_DIR=jdk1.8.0_162|' oracle-java8-installer.*

apt-get install -f -y
apt-get install -y oracle-java8-set-default

我将它们放在一个单独的脚本中并运行它

RUN /bin/sh /path/to/script.sh

或者您可以直接从 Dockerfile 运行它们,这取决于您。

【讨论】:

  • 感谢 Martin,您节省了我的时间,我几乎开始手动操作了
  • 对我有用的不是运行 Dockerfile 中的命令,而是创建脚本并使用 RUN /bin/sh /path/to/script.sh
【解决方案3】:

您正在从 webupd8 PPA 存储库进行安装。如果您注意到,该 repo 中的 Java 8 包指向 Java 8 版本151。该软件包从 Oracle 服务器中提取 151 的二进制文件(因为 Java Oracle 许可证不允许任何其他人托管二进制文件)。甲骨文几天前发布了版本161,显然从他们的服务器中移动或删除了151。所以基本上 webupd8 PPA 存储库中的包正在尝试下载 151 二进制文件,该二进制文件不再存在于 webupd8 包所期望的位置(因此你得到了 404)。 webupd8 PPA 存储库维护者必须发布一个新包,指向来自 Oracle 的新 161 二进制文件。 Docker 或 Debian 在这个问题中没有任何作用,它基本上只是一个断开的链接问题。

在此之前,您可以应用此处提到的“解决方法”:JDK 8 is NOT installed - ERROR 404: Not Found

这是 webupd8 存储库中的 Java 包列表:

https://launchpad.net/~webupd8team/+archive/ubuntu/java/+packages

【讨论】:

  • 链接“JDK 8 未安装”的答案非常有帮助
  • 感谢@donhector 的明确解释。我得到了解决方法的想法,但我不明白如何实现它。我应该在哪里添加以下内容?运行 apt-get --download-only -y --force-yes install oracle-java8-installer 运行 sed -i ... /var/cache/apt/archives/oracle-java8-installer* ...
【解决方案4】:

dpkg oracle Jdk error while installing cassandra in Ubuntu 16.04。使用任何类型的安装脚本的每个人都会出现此问题。

【讨论】:

    【解决方案5】:

    ** Java 11:

    RUN apt-get install wget java-common gnupg2 -y
    RUN echo "oracle-java11-installer shared/accepted-oracle-license-v1-2 select true" | debconf-set-selections
    RUN echo "deb http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic main" | tee /etc/apt/sources.list.d/linuxuprising-java.list
    RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 73C3DB2A
    RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends oracle-java11-installer && apt-get clean all
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多