簡體   English   中英

如何在docker debian:jessie上安裝oracle-java8-installer

[英]How to install oracle-java8-installer on docker debian:jessie

我試圖在debian:jessie docker容器上通過oracle-java8-installer安裝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

我在網上發現了許多類似的問題,但是沒有一個建議的解決方案對我有用。 任何想法?

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

關於捐贈者的回答和您的問題:您需要替換安裝程序文件中的字符串, 而不是最后一個命令:

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運行它們,這取決於您。

您正在從webupd8 PPA存儲庫進行安裝。 如果您注意到,則該存儲庫中的Java 8軟件包指向Java 8版本151 該軟件包從Oracle服務器中提取了151的二進制文件(因為Java Oracle許可證不允許其他任何人托管二進制文件)。 甲骨文在幾天前發布了161版,顯然從其服務器中遷移或刪除了151 因此,基本上,webupd8 PPA存儲庫中的軟件包嘗試下載151二進制文件,該二進制文件不再存在於webupd8軟件包期望的位置(因此,您會得到404)。 webupd8 PPA回購維護者將必須發布一個新軟件包,指向Oracle的新161二進制文件。 Docker或Debian在此問題上不起作用,它基本上只是一個斷開的鏈接問題。

在此之前,您可以應用此處所述的“替代方法” :未安裝JDK 8-找不到錯誤404:

以下是webupd8存儲庫中的Java軟件包列表:

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

在Ubuntu 16.04中安裝cassandra時,請參閱dpkg oracle Jdk錯誤 使用任何類型的安裝腳本的每個人都會發生此問題。

** 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM