J'essaie d'installer Java7 via ppa (exécutez add-apt-repository ppa: webupd8team/Java -y) dans mon image de menu fixe, mais cela échoue avec l'erreur suivante:
returned a non-zero code: 127
Vous trouverez ci-dessous des méthodes d'installation correctes, mais cela ne fonctionne pas. J'ai aussi essayé les deux ppas.
RUN apt-get install python-software-properties -y
RUN add-apt-repository ppa:webupd8team/Java -y
#RUN add-apt-repository ppa:eugenesan/Java -y
RUN apt-get update
RUN apt-get install Oracle-Java7-installer -y
Voici la sortie du journal:
Step 28 : RUN add-apt-repository ppa:webupd8team/Java -y
---> Running in b278761a4209
[91m/bin/sh: 1: add-apt-repository: not found
[0m
Donc ... Je dois savoir où/si cette commande existe dans une bibliothèque d'aide ou quoi:
add-apt-repository
add-apt-repository semble faire partie de l'installation de python-software-properties. Je ne vois aucune erreur réelle dans cette étape, à l'exception de ces messages qui apparaissent dans d'autres zones de la construction. Donc, je (suppose) que si je peux résoudre ce problème, l'étape python susmentionnée sera installée en fonction des besoins:
[91mdebconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
[0m[91mdebconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
[0m[91mdpkg-preconfigure: unable to re-open stdin:
Alors. Comment définir un terme ou un dialogue? Je pensais que le -y permettait cela
Le -y
dans vos commandes apt-get install
indique à apt-get
de "supposer que oui", ce qui n’est pas identique à une exécution en mode non interactif.
Vous voyez les messages "incapable d’initialiser frontend: Dialogue" parce que Debian exécute apt-get
en mode interactif. Pour lui dire de fonctionner en mode non interactif, ajoutez cette ligne au début de votre fichier Docker:
ENV DEBIAN_FRONTEND noninteractive
Vos commandes s'exécuteront désormais en mode non interactif. apt-get
n'essaiera donc pas d'ouvrir une boîte de dialogue.
En ce qui concerne votre erreur réelle, vous avez raison, add-apt-respository
fait partie du python-software-properties
. Essayez de placer votre commande apt-get update -y
au-dessus de votre commande apt-get install python-software-properties
.
RUN apt-get update -y && \
apt-get install python-software-properties -y && \
add-apt-repository ppa:webupd8team/Java -y && \
apt-get update -y && \
apt-get install Oracle-Java7-installer -y && \
Oracle-Java7-set-default
Notez que vous devrez exécuter deux commandes apt-get update -y
, une avant de commencer (toujours une bonne habitude à prendre) et une après avoir ajouté le PPA Oracle Java.
La commande add-apt-repository
fait partie du paquet software-properties-common. Installez software-properties-common, pas python-software-properties.
Ensuite, vous pouvez ajouter le référentiel ppa: webupd8team. Mais il y a toujours un problème.
Définissez accepted-Oracle-license-v1-1 et installez Java. L'exemple ci-dessous Dockerfile fonctionnera parfaitement.
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install software-properties-common -y
RUN add-apt-repository ppa:webupd8team/Java -y
RUN apt-get update
RUN echo debconf shared/accepted-Oracle-license-v1-1 select true | debconf-set-selections
RUN apt-get install Oracle-Java7-installer -y
J'ai essayé différentes choses en vain et je me suis donc tourné vers OpenJDK. Cela m'a permis de franchir cette étape et de passer à l'erreur suivante :-).
# method 2
RUN apt-get install openjdk-7-jre -y