web-dev-qa-db-fra.com

echec de l'installation de docker Java7

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

19
Will Lopez

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.

apt-get manual

Docker ENV docs

27
Chris McKinnel

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
13
nacyot

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
0
Will Lopez