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?
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.
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
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
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.