web-dev-qa-db-fra.com

Comment installer Oracle-Java8-Installer sur Docker Debian: Jessie

J'essaie d'installer Java 8 via le programme d'installation Oracle-Java8 sur un conteneur Debian: Jessie Docker. Voici mon 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

Pourtant cela donne:

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

J'ai trouvé de nombreux problèmes similaires décrits en ligne, mais aucune des solutions proposées ne fonctionnait pour moi. Une idée?

9
Jacopo Lanzoni

Répondez à la réponse de donhector et à votre question: vous devez remplacer les chaînes du fichier d’installation, à la place de votre dernière commande:

apt-get install -y --force-yes Oracle-Java8-installer

lancez ces commandes:

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

Je les ai dans un script séparé et l'exécute en tant que

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

ou vous pouvez les exécuter directement depuis votre fichier Dockerfile, à vous de choisir.

7
Martin Šuráb

Trouvé la solution sur 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

La "sauce secrète" que vous recherchiez est la première ligne:

RUN echo "Oracle-Java8-installer shared/accepted-Oracle-license-v1-1 select true" | debconf-set-selections
7
Stephen Quan

Vous installez à partir du référentiel webupd8 PPA. Si vous remarquez, le package Java 8 de ce référentiel pointe vers Java 8 version 151. Ce paquet extrait le binaire pour 151 des serveurs Oracle (la licence Java Oracle n'autorisant personne d'autre hébergeant les fichiers binaires). Oracle a publié la version 161 quelques jours en arrière et a apparemment déplacé ou supprimé 151 de ses serveurs. Le paquet dans le référentiel PPA webupd8 essaie donc de télécharger le binaire 151 qui n'existe plus à l'emplacement prévu par le paquet webupd8 (d'où le 404 que vous avez obtenu). Le responsable du référentiel PPA webupd8 devra publier un nouveau package pointant sur les nouveaux fichiers binaires 161 provenant d'Oracle. Docker ou Debian ne jouent aucun rôle dans ce problème, il s’agit simplement d’un problème de lien brisé.

Jusque-là, vous pouvez appliquer une "solution de contournement" comme celle mentionnée ici: JDK 8 n'est pas installé - ERREUR 404: introuvable

Voici la liste des packages Java dans le référentiel webupd8:

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

5
donhector

Voir dpkg Erreur Oracle Jdk lors de l’installation de Cassandra dans Ubuntu 16.04 . Ce problème se produit pour tous ceux qui utilisent des scripts d'installation, quels qu'ils soient.

2
DoctorPangloss