Как установить oracle-java8-installer на docker debian: jessie

Я пытаюсь установить java 8 через oracle-java8-installer на контейнер debian: jessie docker. Ниже приведен мой файл Docker:

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

Я нашел много подобных проблем, описанных онлайн, но ни один из предлагаемых решений не работал у меня. Любая идея?

Ответ 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

Ответ 2

Повторите ответ и ваш вопрос: вам нужно заменить строки в файле установщика, вместо вашей последней команды:

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

Я имею их в отдельном script и запускаю его как

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

или вы можете запускать их непосредственно из вашего файла Docker, что вам нужно.

Ответ 3

Вы устанавливаете из репозитория PPP webupd8. Если вы заметили, пакет Java 8 в этом репо указывает на версию Java 8 151. Этот пакет вытаскивает двоичный код для 151 с серверов Oracle (так как лицензия Java Oracle не позволяет никому другому размещать двоичные файлы). Oracle выпустила версию 161 пару дней назад и, по-видимому, перемещала или удаляла 151 со своих серверов. Поэтому в основном пакет в репозитории webupd8 PPA пытается загрузить двоичный файл 151, который больше не существует в местоположении, которое ожидает пакет webupd8 (следовательно, у вас есть 404). Разработчику репозиториев webupd8 PPA придется выпустить новый пакет, указывающий на новые двоичные файлы 161 от Oracle. Docker или Debian не играют никакой роли в этом вопросе, это просто проблема с неработающей связью.

До тех пор вы можете применить "обходной путь", как упомянутый здесь: JDK 8 НЕ установлен - ОШИБКА 404: Не найдено

Здесь список пакетов Java в репозитории webupd8:

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

Ответ 5

** Java 11:

RUN apt-get install wget java-common gnupg2 -y

RUN echo "oracle-java11-installer shared/accept-oracle-license-v1-2 выберите 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 = неинтерактивная apt-get install -y --no-install-рекомендует oracle-java11-installer && apt-get clean all