Domanda
Sto cercando di installare Java7 tramite PPA (Esegui Add-apt-repository PPA: WebUpd8Team / Java -Y) nella mia immagine Docker ma non riesce con questo errore:
returned a non-zero code: 127
.
I seguenti sono suggeriti modi per installare correttamente ma non funziona.Ho provato entrambi i PPA.
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
.
Ecco l'output del registro:
Step 28 : RUN add-apt-repository ppa:webupd8team/java -y
---> Running in b278761a4209
[91m/bin/sh: 1: add-apt-repository: not found
[0m
.
Allora ... Devo scoprire dove / se questo comando esiste in un herper lib or what:
add-apt-repository
.
Add-apt-repository sembra essere parte della installazione delle proprietà del software Python.Non vedo errori reali in quella fase tranne che per questi messaggi che vengono visualizzati in altre aree della build.Quindi i assumere che se riesco a risolvere questo problema il suddetto passaggio Python verrà installato secondo quanto necessario:
[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:
.
così.Come impostare un termine o una finestra di dialogo?Ho pensato che il -y ha permesso questo
Soluzione
Il -y
nei tuoi comandi apt-get install
è dire a apt-get
a "assumere sì", che non è la stessa che è in esecuzione in modalità non interattiva.
Stai vedendo i messaggi "Impossibile inizializzare Frontend: Dialog" perché Debian è in esecuzione apt-get
in modalità interattiva. Per dirlo a correre in modalità non interattiva, aggiungere questa linea all'inizio del tuo Dockerfile:
ENV DEBIAN_FRONTEND noninteractive
.
Ora i tuoi comandi verranno in esecuzione in modalità non interattiva, quindi apt-get
non verrà tentato di far coprire alcuna finestra di dialogo.
Per quanto riguarda il tuo errore effettivo, hai ragione, add-apt-respository
fa parte del python-software-properties
. Prova a mettere il tuo comando apt-get update -y
sopra il tuo comando 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
.
Nota, dovrai fare due comandi apt-get update -y
, uno prima di iniziare (sempre una buona abitudine entrare) e una dopo aver aggiunto l'Oracle Java PPA.
Altri suggerimenti
Il comando add-apt-repository
è parte del pakage comune delle proprietà del software.Installare le proprietà software-Comune, non Python-Software-Proprietà-
Quindi è possibile aggiungere PPA: il repository WebUpd8Team.Ma c'è ancora un problema.
Imposta l'accettata-Oracle-License-V1-1 e installa Java.Sotto Dockerfile del campione funzionerà perfettamente.
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
. Ho provato alcune cose diverse a non avvalersi, quindi andai invece con OpenJDK.Questo mi ha portato su questo passo e al prossimo errore: -).
# method 2
RUN apt-get install openjdk-7-jre -y
.