Автоматична установка Java (з тихим параметром)


104

Я намагаюся встановити Java через apt-get.

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

Я сподіваюся, що зможу встановити його без будь-якого втручання чи натискання клавіатур, оскільки я створюю сценарії збирання та розгортання для моїх екземплярів EC2, які автоматично встановлюють усі необхідні для цього теги.

Чи є інші варіанти?

Відповіді:


147

Якщо 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 на істинне, але також позначає його як бачене користувачем. Тепер це питання не повинно з’являтися!

Як я це знайшов?

У вихідному пакеті я відстежив це у 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 1.1.

Будь ласка , зверніться до сторінки керівництву з debconf-set-selectionsна більш докладної інформації, але це приклад для випуску і працює аналогічні для інших пакетів. Які ще ключі у вас в системі в базі даних debconf? Встановіть debconf-utilsі зробіть

$ sudo debconf-get-selections

Потім натисніть на додаткові клавіші, які потрібно встановити в автоматизованій установці. Це спосіб більш гнучке , ніж при використанні -yз , apt-getоскільки це дає можливість встановити, крім налаштувань по замовчуванням на час установки.


9
Фантастична відповідь. :)
Layke

3
Дивовижна відповідь. Працює і з сценарію оболонки.
Дерек


Жодні лапки не потрібні для відлуння команд прийняття ліцензії?
Девід

1
@David Не для цього випадку; якщо ви додасте їх, то результат вийшов echoби точно таким же.
gertvdijk

55

Безшумно встановлюйте 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


1
чудово працює 16.04
пневматика

Це більше не працює
Ахмед Мостафа

@AhmedMostafa Чи можете ви повідомити іншим, де ви це спробували.
Рахул Тхакур

1
Працює oracle-java9-installerтеж.
Коханій Руберт

1
ця робота ідеально підходить із зображенням на основі google / cloud-sdk
Xin Meng

13

Відповідна @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

Ось ця лінія чарівництва мені потрібна для мовчазної установки Oracle Java - спасибі @Hosam
Phantomwhale

Ласкаво просимо @Phantomwhale
Aly

Я помиляюсь, чи у вашій відповіді відсутній / зайвий символ "" "?
Девід

11

Я перевірив наступну роботу речення для мене за допомогою 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

Я спробував це, і це не працює.
Ахмед Мостафа

Підтверджено, що працює для мене на docker-ce 18.05 на Kubuntu 18.04: D, що встановлюється в i386/ubuntu:18.04контейнер.
BeepDog

2

Для безшумної установки Java ви можете спробувати open-jdk:

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

Спробуйте це також для інших пакетів / розширень з відкритим jdk ...

sudo apt-cache search openjdk


Це рішення спрацювало чудово. sudo apt-get install -y openjdk-7-jdk
Layke


0

Це уривок з Dockerfile, який я використовував для успішного створення докерського зображення на основі 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.