Docker java7 install fail
Я пытаюсь установить java7 через ppa (RUN add-apt-repository ppa: webupd8team/java -y) в образ моего докера, но с этой ошибкой он не работает:
returned a non-zero code: 127
Ниже приведены способы правильной установки, но они не работают. Я тоже пробовал оба 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
Вот вывод журнала:
Step 28 : RUN add-apt-repository ppa:webupd8team/java -y
---> Running in b278761a4209
[91m/bin/sh: 1: add-apt-repository: not found
[0m
Итак... Мне нужно выяснить, где/если эта команда существует в вспомогательной lib или что:
add-apt-repository
add-apt-repository, по-видимому, входит в состав свойств python-software-properties. Я не вижу никаких реальных ошибок на этом шаге, кроме тех сообщений, которые появляются в других областях сборки. Поэтому я предполагаю, что если я смогу решить эту проблему, вышеупомянутый шаг python будет установлен по мере необходимости:
[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:
Итак. Как установить термин или диалог? Я думал, что -y разрешил это
Ответы
Ответ 1
-y
apt-get install
команды apt-get install
сообщают apt-get
"принять да", что не то же самое, что работает в неинтерактивном режиме.
Вы видите сообщение "невозможно инициализировать интерфейс: диалог", потому что Debian работает apt-get
в интерактивном режиме. Чтобы сказать, чтобы он работал в неинтерактивном режиме, добавьте эту строку в начало вашего файла Docker:
ENV DEBIAN_FRONTEND noninteractive
Теперь ваши команды будут работать в неинтерактивном режиме, поэтому apt-get
не будет пытаться вскрыть любые диалоги.
Что касается вашей фактической ошибки, вы правы, add-apt-respository
является частью python-software-properties
. Попробуйте добавить команду apt-get update -y
выше вашей команды 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
Обратите внимание: вам нужно будет сделать две команды apt-get update -y
, одну перед запуском (всегда хорошая привычка вступать), и после того, как вы добавили PPA oracle java.
apt-get manual
Документы Docker ENV
Ответ 2
add-apt-repository
команда является частью программного обеспечения-свойств-общего пакинга. Установите программные свойства - общие, а не свойства python-software.
Затем вы можете добавить ppa: репозиторий webupd8team. Но проблема все еще остается.
Установите принятую-oracle-лицензию-v1-1 и установите java. Ниже образец Dockerfile будет работать отлично.
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
Ответ 3
Я попробовал несколько разных вещей безрезультатно, поэтому вместо этого я пошел с OpenJDK. Это заставило меня пройти этот шаг и следующую ошибку: -).
# method 2
RUN apt-get install openjdk-7-jre -y