Вопрос Автоматическая установка Java (с помощью Silent Option)


Я пытаюсь установить Java через apt-get.

я нашел это PPA Java Installers, однако, когда я добавляю репозиторий, обновляю и затем выдаю команду apt-get install -y, программа установки для java берет верх, и появляется опция конфигурации.

Я надеюсь, что смогу установить его без какого-либо вмешательства или нажатия клавиш, поскольку я создаю скрипты для сборки и развертывания для своих экземпляров EC2, которые будут автоматически устанавливать все тегированные пакеты, которые ему нужны.

Есть ли другие варианты?


100
2017-09-19 14:38


происхождения




ответы:


Если OpenJDK / OpenJRE отлично подходит для вас, я рекомендую использовать этот пакет, как это было предложено @SAM. Однако для некоторых программ действительно требуется JDK / JRE от Oracle. Этот ответ заключается в том, как отключить лицензионный вопрос с пакетом Oracle из PPA.

Во-первых, давайте признаем, что заданный вопрос особенность пакета, созданного разработчиком.

oracle-java7-installer (7u7-0~webupd8~4) maverick; urgency=medium

  * removed cookie file use or else the PPA stays disabled
  * request the user to accept the Oracle license before installation
 -- Alin Andrei <webupd8@gmail.com>   Tue, 04 Sep 2012 14:18:29 +0200

Как указал @Nate в своем ответе, должен быть тихий вариант. И есть. Сделайте это перед установкой:

$ echo debconf shared/accepted-oracle-license-v1-1 select true | \
  sudo debconf-set-selections
$ echo debconf shared/accepted-oracle-license-v1-1 seen true | \
  sudo debconf-set-selections

Это устанавливает значение ключа debconf в значение true, но также отмечает его как видно пользователю. Теперь этот вопрос не должен появляться!

Как я нашел это?

В источнике пакета я проследил это в oracle-java7-installer.preinst файл:

license=oracle-license-v1-1

# snip

db_get shared/accepted-$license
if [ "$RET" = "true" ]; then
    echo "$license license has already been accepted" >&2
    exit 0
fi

Очевидно, он использует значение debconf для ключа shared/accepted-oracle-license-v1-1 проверить, принял ли пользователь лицензию. Если это так, скрипт выйдет изящно и позволит продолжить установку, не задавая вам вопрос. Теперь мы должны просто сказать debconf, что вы уже принимаете Oracle License 1.1.

См. Справочную страницу debconf-set-selections более подробно, но это пример вашей проблемы и работает аналогично для других пакетов. Какие еще ключи у вас есть в вашей системе в базе данных debconf? устанавливать debconf-utils и делай

$ sudo debconf-get-selections

Затем grep для получения дополнительных ключей, которые необходимо установить в вашей автоматической установке. Это более гибко, чем использование -y с apt-get так как это дает вам возможность устанавливать другие параметры, кроме настроек по умолчанию, во время установки.


141
2017-09-19 19:45



Фантастический ответ. :) - Layke
Удивительный ответ. Работает также из сценария оболочки. - Derek
Также работает для Java 8, - jameshfisher
Нет кавычек для эха команд приема лицензии? - David
@David Не для этого случая; если вы добавите их echo будет точно такой же. - gertvdijk


Тихая установка Java 6/7/8/9 с использованием PPA команды WebUpd8

sudo apt-get install -y python-software-properties debconf-utils
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer

@gertvdijk ответ не работал со мной на Ubuntu 14.04 и 14.10


53
2018-06-17 08:51



отлично работает 16.04 - pneumatics
Это больше не работает - Ahmed Mostafa
@AhmedMostafa Можете ли вы сообщить другим, где вы это пробовали. - Rahul Thakur
Работает на oracle-java9-installer слишком. - Kohányi Róbert
эта работа отлично работает с изображением google / cloud-sdk - Xin Meng


Поддержка @gertvdijk ответ это описание в оригинальное сообщение в блоге о PPA webupd8.

Обновление 2: установщик теперь требует, чтобы вы приняли лицензию Oracle   перед началом установки. Это требуется только один раз. Если для   по какой-то причине вам необходимо, чтобы установка была автоматизирована, вы можете запустить   следующая команда для автоматического принятия лицензии Oracle:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | \
sudo /usr/bin/debconf-set-selections

13
2018-06-17 09:28



Это линия магии, которая мне нужна для моей бесшумной установки Oracle Java - спасибо @Hosam - Phantomwhale
Добро пожаловать @Phantomwhale - Hosam Aly
Я ошибаюсь, или в вашем ответе есть отсутствующий / лишний символ ``? - David
Ты прав @ Давид. Благодаря! - Hosam Aly


Я проверил следующее предложение для меня, используя docker ubuntu16.04LTS.

RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:webupd8team/java && apt-get update

RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections

RUN apt-get install -y oracle-java8-installer

11
2017-08-08 01:09



Я попробовал, и он не работает. - Ahmed Mostafa
Подтвержденная работа для меня на docker-ce 18.05 на Kubuntu 18.04: D установка в i386/ubuntu:18.04 контейнер. - BeepDog


Для бесшумный java install вы можете попробовать open-jdk:

sudo apt-get install -y openjdk-7-jdk

Также попробуйте это для более открытых пакетов / расширений open-jdk ...

поиск sudo apt-cache openjdk


2
2017-09-19 14:43



Это решение отлично поработало. sudo apt-get install -y openjdk-7-jdk - Layke


Oracle java больше не находится в репозиториях Ubuntu. http://www.omgubuntu.co.uk/2011/12/java-to-be-removed-from-ubuntu-uninstalled-from-user-machines

Вот как установить Java JDK. Как установить Oracle Java JDK 7?

Должна быть тихая опция.


1
2017-09-19 14:48





Это отрывок из файла Docker, который я использовал для успешного создания образа docker на основе Debian:

(Справка)

RUN apt-get update \
    && apt-get upgrade \
    && apt-get install -y gnupg

RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
RUN echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
RUN apt-get update
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
RUN apt-get install -y oracle-java8-installer \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && R CMD javareconf

0
2017-07-12 12:10