Automatyczna instalacja Java (z cichą opcją)


104

Próbuję zainstalować Javę przez apt-get.

Znalazłem ten PPA Instalatorów Java , jednak kiedy dodam repozytorium, zaktualizuję, a następnie wydam polecenie apt-get install -y, instalator java przejmie kontrolę i wyświetli się opcja konfiguracji.

Mam nadzieję, że będę mógł go zainstalować bez interwencji lub naciskania klawiatur, ponieważ tworzę skrypty kompilacji i wdrażania dla moich instancji EC2, które automatycznie instalują wszystkie oznaczone pakiety, których potrzebuje.

Czy są jakieś inne opcje?

Odpowiedzi:


147

Jeśli OpenJDK / OpenJRE działa dla ciebie dobrze, zalecam użycie tego pakietu zamiast sugerowanego przez @SAM. Jednak niektóre oprogramowanie naprawdę wymaga JDK / JRE Oracle. Ta odpowiedź brzmi: jak wyciszyć pytanie licencyjne za pomocą pakietu Oracle z PPA.

Po pierwsze, rozpoznajmy, że zadane pytanie jest funkcją pakietu, stworzoną przez programistę.

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

Jak wskazał @Nate w swojej odpowiedzi, powinna istnieć cicha opcja. I jest. Zrób to przed zainstalowaniem:

$ 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

To ustawia wartość klucza debconf na true, ale także oznacza go jako widziany przez użytkownika. Teraz to pytanie nie powinno się pojawić!

Jak to znalazłem?

W źródle pakietu wyśledziłem to w oracle-java7-installer.preinstpliku:

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

Wygląda na to, że używa wartości debconf dla klucza, shared/accepted-oracle-license-v1-1aby sprawdzić, czy użytkownik już zaakceptował licencję. Jeśli tak, skrypt zakończy działanie z wdziękiem i pozwoli na kontynuowanie instalacji bez zadawania pytania. Powinniśmy teraz powiedzieć debconfowi, że już akceptujesz licencję Oracle 1.1.

Więcej informacji można znaleźć na stronie podręcznika debconf-set-selections, ale to jest przykład twojego problemu i działa podobnie w przypadku innych pakietów. Jakie inne klucze masz w swoim systemie w bazie danych debconf? Zainstaluj debconf-utilsi zrób

$ sudo debconf-get-selections

Następnie grep, aby uzyskać więcej kluczy, które musisz ustawić w automatycznej instalacji. Jest to o wiele bardziej elastyczne niż używanie -yz, apt-getponieważ daje możliwość ustawienia innych niż domyślne ustawień dla czasów instalacji.


9
Fantastyczna odpowiedź. :)
Layke,

3
Świetna odpowiedź. Działa również ze skryptu powłoki.
Derek


Nie są potrzebne cudzysłowy dla echa poleceń akceptacji licencji?
David,

1
@David Nie w tym przypadku; jeśli je dodasz, wynik echobędzie dokładnie taki sam.
gertvdijk

55

Cicha instalacja Java 6/7/8/9 przy użyciu PPA zespołu 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

Odpowiedź @gertvdijk nie działała ze mną na Ubuntu 14.04 i 14.10


1
działa świetnie 16.04
pneumatyka

To już nie działa
Ahmed Mostafa,

@AhmedMostafa Czy możesz powiadomić innych, gdzie próbowałeś tego.
Rahul Thakur,

1
Działa oracle-java9-installerteż dla .
Kohányi Róbert

1
działa idealnie z obrazem opartym na Google / Cloud-SDK
Xin Meng

13

Odpowiedź na @gertvdijk to opis w oryginalnym poście na blogu o PPA webupd8.

Aktualizacja 2: instalator wymaga teraz zaakceptowania licencji Oracle przed rozpoczęciem instalacji. Jest to wymagane tylko raz. Jeśli z jakiegoś powodu potrzebujesz zautomatyzowanej instalacji, możesz uruchomić następującą komendę, aby automatycznie zaakceptować licencję Oracle:

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

Oto linia magii, której potrzebowałem do mojej cichej instalacji Oracle Java - dzięki @Hosam
Phantomwhale

Nie ma za co @ Phantomwhale
Hosam Aly

Czy się mylę, czy w twojej odpowiedzi jest brakująca / dodatkowa postać?
David,

11

Za pomocą dokera ubuntu16.04LTS zweryfikowałem następujące zdanie.

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

Próbowałem i nie działa.
Ahmed Mostafa,

Potwierdzono pracę dla mnie w docker-ce 18.05 na Kubuntu 18.04: D instalacja w i386/ubuntu:18.04kontenerze.
BeepDog

2

W przypadku cichej instalacji Java można wypróbować open-jdk:

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

Wypróbuj również, aby uzyskać więcej pakietów / rozszerzeń open-jdk ...

sudo apt-cache search openjdk


To rozwiązanie działało świetnie. sudo apt-get install -y openjdk-7-jdk
Layke


0

To jest fragment pliku Docker, którego użyłem do pomyślnego zbudowania obrazu dokera opartego na Debianie:

( Odniesienie )

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.