Installazione automatica di Java (con opzione silenziosa)


104

Sto cercando di installare Java tramite apt-get.

Ho trovato questo PPA di programmi di installazione Java , tuttavia, quando aggiungo il repository, aggiorno e quindi lancio il comando apt-get install -y, il programma di installazione per java prende il sopravvento e si apre un'opzione di configurazione.

Spero di essere in grado di installarlo senza alcun intervento o pressione di tastiere poiché sto creando script di compilazione e distribuzione per le mie istanze EC2 che installeranno automaticamente tutti i pacchetti contrassegnati di cui ha bisogno.

Ci sono altre opzioni?

Risposte:


147

Se OpenJDK / OpenJRE funziona bene per te, ti consiglio invece di usare quel pacchetto come suggerito da @SAM. Tuttavia, alcuni software richiedono davvero JDK / JRE di Oracle. Questa risposta spiega come silenziare la domanda di licenza con il pacchetto Oracle dal PPA.

Innanzitutto, riconosciamo che la domanda posta è una funzionalità del pacchetto, creata dallo sviluppatore.

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

Come indicato da @Nate nella sua risposta, dovrebbe esserci un'opzione silenziosa. E c'è. Fallo prima di installarlo:

$ 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

Questo imposta il valore della chiave debconf su true, ma lo contrassegna anche come visto dall'utente. Ora questa domanda non dovrebbe apparire!

Come ho trovato questo?

Nella fonte del pacchetto, l'ho rintracciato nel oracle-java7-installer.preinstfile:

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

Apparentemente, utilizza il valore di debconf per la chiave shared/accepted-oracle-license-v1-1per verificare se l'utente ha già accettato la licenza. In tal caso, lo script verrà chiuso correttamente e consentirà all'installazione di continuare senza farti la domanda. Ora dovremmo solo dire a debconf che hai già accettato la Licenza Oracle 1.1.

Per debconf-set-selectionsulteriori dettagli, consultare la manpage di , ma questo è l'esempio del problema e funziona in modo simile per altri pacchetti. Quali altre chiavi hai sul tuo sistema nel database di debconf? Installa debconf-utilse fai

$ sudo debconf-get-selections

Quindi grep per ulteriori chiavi che è necessario impostare nell'installazione automatica. Questo è molto più flessibile rispetto all'uso -ycon in apt-getquanto ti dà l'opportunità di impostare diverse dalle impostazioni predefinite nei tempi di installazione.



Non sono necessarie virgolette per l'eco dei comandi di accettazione della licenza?
David,

1
@ David Non per questo caso; se li aggiungessi, l'output di echosarebbe esattamente lo stesso.
gertvdijk,

55

Installazione invisibile all'utente Java 6/7/8/9 utilizzando il PPA del team 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

La risposta di @gertvdijk non ha funzionato con me su Ubuntu 14.04 e 14.10


1
funziona alla grande il 16.04
pneumatica

Questo non funziona più
Ahmed Mostafa,

@AhmedMostafa Puoi far sapere agli altri dove hai provato questo.
Rahul Thakur,

1
Funziona oracle-java9-installeranche per .
Kohányi Róbert

1
questo lavoro è perfetto con l'immagine basata su google / cloud-sdk
Xin Meng

13

La risposta di @gertvdijk a supporto è la descrizione nel post originale del blog sul PPA di webupd8.

Aggiornamento 2: il programma di installazione ora richiede l'accettazione della licenza Oracle prima dell'inizio dell'installazione. Questo è richiesto solo una volta. Se per qualche motivo è necessario automatizzare l'installazione, è possibile eseguire il comando seguente per accettare automaticamente la licenza Oracle:

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

Questa è la linea di magia di cui avevo bisogno per la mia installazione silenziosa di Oracle Java - grazie @Hosam
Phantomwhale

Prego @Phantomwhale
Hosam Aly,

Sbaglio o c'è un carattere "/" mancante / extra nella tua risposta?
David,

11

Ho verificato che la frase seguente funziona per me utilizzando la finestra mobile 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

L'ho provato e non funziona.
Ahmed Mostafa,

Confermato di lavorare per me su docker-ce 18.05 su Kubuntu 18.04: D installazione in un i386/ubuntu:18.04contenitore.
BeepDog,

2

Per un'installazione java silenziosa puoi provare open-jdk:

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

Prova anche questo per altri pacchetti / estensioni open-jdk ...

sudo apt-cache cerca openjdk


Questa soluzione ha funzionato alla grande. sudo apt-get install -y openjdk-7-jdk
Layke,


0

Questo è un estratto dal Dockerfile che ho usato per costruire correttamente un'immagine docker basata su Debian:

( Riferimento )

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.