Vraag Java automatisch installeren (met stille optie)


Ik probeer Java te installeren via apt-get.

ik vond dit PPA van Java-installatieprogramma'swanneer ik echter de repository toevoeg, update en vervolgens de opdracht apt-get installeer -y uit, neemt het installatieprogramma voor java het over en verschijnt er een configuratieoptie.

Ik hoop dat ik het kan installeren zonder tussenkomst of druk op toetsenborden, want ik maak build en implementeer scripts voor mijn EC2-instanties die automatisch alle gelabelde pakketten installeren die het nodig heeft.

Zijn er andere opties?


99
2017-09-19 14:38


oorsprong




antwoorden:


Als OpenJDK / OpenJRE voor u goed werkt, raad ik aan dat pakket in plaats daarvan te gebruiken zoals voorgesteld door @SAM. Sommige software vereist echter echt JDK / JRE van Oracle. Dit antwoord is hoe u de licentievraag kunt stoppen met het Oracle-pakket van de PPA.

Laten we eerst erkennen dat de vraag een is voorzien zijn van van het pakket, gemaakt door de ontwikkelaar.

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

Zoals @Nate in zijn antwoord heeft aangegeven, zou er een stille optie moeten zijn. En daar is. Doe dit voordat u het installeert:

$ 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

Hiermee wordt de waarde van de debconf-sleutel ingesteld op true, maar wordt deze ook gemarkeerd door de gebruiker. Nu zou deze vraag niet moeten verschijnen!

Hoe heb ik dit gevonden?

In de bron van het pakket heb ik dit bijgehouden in de oracle-java7-installer.preinst het dossier:

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

Blijkbaar gebruikt het de waarde van debconf voor de sleutel shared/accepted-oracle-license-v1-1 om te controleren of de gebruiker de licentie al heeft geaccepteerd. Als dit het geval is, wordt het script sierlijk afgesloten en kan de installatie worden voortgezet zonder u de vraag te stellen. We moeten nu gewoon debconf vertellen dat je de Oracle-licentie 1.1 al accepteert.

Raadpleeg de manpage van debconf-set-selections voor meer details, maar dit is het voorbeeld voor uw probleem en werkt vergelijkbaar voor andere pakketten. Welke andere sleutels heb je op je systeem in de database van debconf? Installeren debconf-utils en doe

$ sudo debconf-get-selections

Vervolgens grep voor meer sleutels die u in uw geautomatiseerde installatie moet instellen. Dit is veel flexibeler dan het gebruik -y met apt-get omdat het u de mogelijkheid biedt andere dan standaardinstellingen in te stellen voor installatietijden.


140
2017-09-19 19:45



Fantastisch antwoord. :) - Layke
Geweldig antwoord. Werkt ook vanuit een shellscript. - Derek
Werkt ook voor Java 8. - jameshfisher
Geen citaten nodig voor de echo van de licentie-acceptatieopdrachten? - David
@David Niet voor dit geval; als je ze de uitvoer zou toevoegen van echo zou precies hetzelfde zijn. - gertvdijk


Stil Java 6/7/8/9 installeren met gebruik van De PPA van het WebUpd8-team

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 antwoord werkte niet met mij op Ubuntu 14.04 en 14.10


52
2018-06-17 08:51



werkt geweldig op 16.04 - pneumatics
Dit werkt niet meer - Ahmed Mostafa
@AhmedMostafa Kun je anderen laten weten waar je dit hebt geprobeerd? - Rahul Thakur
Werkt voor oracle-java9-installer te. - Kohányi Róbert
dit werkt perfect met google / cloud-sdk gebaseerde afbeelding - Xin Meng


Ondersteuning van @gertvdijk antwoord is de beschrijving in de origineel blogbericht over de PPA van webupd8.

Update 2: het installatieprogramma vereist nu dat u de Oracle-licentie accepteert   voordat de installatie begint. Dit is maar één keer nodig. Als voor   Om een ​​of andere reden moet u de installatie laten automatiseren, dan kunt u de   volgende opdracht om de Oracle-licentie automatisch te accepteren:

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



Dat is de magie die ik nodig had voor mijn stille installatie van Oracle Java - bedankt @Hosam - Phantomwhale
Graag gedaan @ Phantomwhale - Hosam Aly
Heb ik het fout, of is er een ontbrekend / extra "" "teken in je antwoord? - David
Je hebt gelijk @David. Bedankt! - Hosam Aly


Ik heb geverifieerd dat de volgende zin voor mij werkt met behulp van 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



Ik heb het geprobeerd en het werkt niet. - Ahmed Mostafa
Bevestigd voor mij werken op dokwerkstation 18.05 op Kubuntu 18.04: D installeren in a i386/ubuntu:18.04 container. - BeepDog


Voor een stil java install kun je open-jdk proberen:

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

Probeer dit ook voor meer open-jdk pakketten / uitbreidingen ...

sudo apt-cache search openjdk


2
2017-09-19 14:43



Deze oplossing werkte prima. sudo apt-get installeer -y openjdk-7-jdk - Layke


Oracle java bevindt zich niet meer in de Ubuntu-repo's. http://www.omgubuntu.co.uk/2011/12/java-to-be-removed-from-ubuntu-uninstalled-from-user-machines

Hier ziet u hoe de Java JDK te installeren. Hoe installeer ik Oracle Java JDK 7?

Er moet een stille optie beschikbaar zijn.


1
2017-09-19 14:48





Dit is een fragment uit de Dockerfile die ik heb gebruikt om met succes een op Debian gebaseerde docker-image te bouwen:

(Referentie)

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