Question

J'essaie d'installer Java7 via ppa (RUN add-apt-repository ppa:webupd8team/java -y) dans mon image Docker mais cela échoue avec cette erreur :

returned a non-zero code: 127

Les méthodes suivantes sont suggérées pour une installation correcte, mais cela ne fonctionne pas.J'ai également essayé les deux papas.

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 

Alors... j'ai besoin de savoir où/si cette commande existe dans une bibliothèque d'assistance 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 à cette étape, à l'exception de ces messages qui apparaissent dans d'autres zones de la construction.Donc je supposer que si je peux résoudre ce problème, l'étape python susmentionnée s'installera si nécessaire :

    [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: 

Donc.Comment définir un terme ou un dialogue ?Je pensais que le -y autorisait ça

Était-ce utile?

La solution

Le -y dans ton apt-get install les commandes sont révélatrices apt-get pour "supposer oui", ce qui n'est pas la même chose que de fonctionner en mode non interactif.

Vous voyez le message « Impossible d'initialiser l'interface :Messages de dialogue "car Debian est en cours d'exécution apt-get en mode interactif.Pour lui dire de s'exécuter en mode non interactif, ajoutez cette ligne au début de votre Dockerfile :

ENV DEBIAN_FRONTEND noninteractive

Vos commandes s'exécuteront désormais en mode non interactif, donc apt-get n'essaiera pas d'afficher des boîtes de dialogue.

Quant à votre erreur réelle, vous avez raison, add-apt-respository fait partie du python-software-properties.Essayez de mettre votre apt-get update -y commande au-dessus de votre apt-get install python-software-properties commande.

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

Attention, vous devrez en faire deux apt-get update -y commandes, une avant de commencer (toujours une bonne habitude à prendre) et une après avoir ajouté le PPA Oracle Java.

apt-get manuel

Documents Docker ENV

Autres conseils

add-apt-repository La commande fait partie du package 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 le accept-oracle-license-v1-1 et installez Java.L'exemple de Dockerfile ci-dessous 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é quelques choses différentes à rien, alors je suis allé avec OpenJDK à la place.Cela m'a passé devant cette étape et à l'erreur suivante: -).

# method 2
RUN apt-get install openjdk-7-jre -y

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top