首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在docker debian上安装oracle-java8-installer

如何在docker debian上安装oracle-java8-installer
EN

Stack Overflow用户
提问于 2018-01-17 20:32:42
回答 5查看 12K关注 0票数 12

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

代码语言:javascript
复制
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

然而,这给了我们:

代码语言:javascript
复制
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

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

EN

回答 5

Stack Overflow用户

发布于 2018-07-25 10:31:59

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

代码语言:javascript
复制
## 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

你要找的“秘密调料”是第一行:

代码语言:javascript
复制
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
票数 9
EN

Stack Overflow用户

发布于 2018-01-19 22:33:11

回答donhector的回答和你的问题:你需要替换安装程序文件中的字符串,用代替你上一条命令的

代码语言:javascript
复制
apt-get install -y --force-yes oracle-java8-installer

运行以下命令:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
RUN /bin/sh /path/to/script.sh

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

票数 7
EN

Stack Overflow用户

发布于 2018-01-18 02:54:07

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

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

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

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48301257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档