Installation automatique de Java (avec option silencieuse)

104

J'essaie d'installer Java via apt-get.

J'ai trouvé ce programme d'installation de PPA en Java , cependant, lorsque j'ajoute le référentiel, que je met à jour, puis que j'émets la commande apt-get install -y, le programme d'installation de Java prend le relais et affiche une option de configuration.

J'espère pouvoir l'installer sans aucune intervention ni pression sur les claviers, car je crée des scripts de construction et de déploiement pour mes instances EC2, qui installeront automatiquement tous les packages marqués dont il a besoin.

Y a-t-il d'autres options?

Layke
la source

Réponses:

147

Si OpenJDK / OpenJRE fonctionne correctement pour vous, je vous recommande d'utiliser ce paquet plutôt que suggéré par @SAM. Cependant, certains logiciels nécessitent vraiment le JDK / JRE d’Oracle. Cette réponse est comment faire pour rendre la question de licence avec le package Oracle de PPA.

Tout d'abord, reconnaissons que la question posée est une fonctionnalité du package créée par le développeur.

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

Comme @Nate l'a indiqué dans sa réponse, il devrait y avoir une option silencieuse. Et voici. Faites ceci avant de l'installer:

$ 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

Ceci définit la valeur de la clé debconf sur true, mais la marque également telle que vue par l'utilisateur. Maintenant, cette question ne devrait pas apparaître!

Comment ai-je trouvé cela?

Dans la source du paquet, j'ai trouvé ceci dans le oracle-java7-installer.preinstfichier:

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

Apparemment, il utilise la valeur de debconf pour la clé shared/accepted-oracle-license-v1-1afin de vérifier si l'utilisateur a déjà accepté la licence. Si c'est le cas, le script se fermera normalement et permettra à l'installation de continuer sans vous poser la question. Nous devrions maintenant simplement dire à debconf que vous acceptez déjà la licence Oracle 1.1.

Veuillez vous reporter à la page de manuel de debconf-set-selectionssur plus de détails, mais ceci est l'exemple de votre problème et fonctionne de manière similaire pour d'autres packages. Quelles autres clés avez-vous sur votre système dans la base de données debconf? Installer debconf-utilset faire

$ sudo debconf-get-selections

Puis grep pour plus de clés que vous devez définir dans votre installation automatisée. C'est beaucoup plus souple que d'utiliser -yavec apt-getcar cela vous donne la possibilité de définir des paramètres autres que les paramètres par défaut sur les temps d'installation.

Gertvdijk
la source
Aucun devis n'est nécessaire pour l'écho des commandes d'acceptation de licence?
David
1
@David Pas pour ce cas; si vous les ajoutiez, le résultat echoserait exactement le même.
gertvdijk
55

Installation silencieuse de Java 6/7/8/9 à l'aide du PPA de l'équipe 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 answer n'a pas fonctionné avec moi sur Ubuntu 14.04 & 14.10

Rahul Thakur
la source
1
fonctionne très bien le 16.04
pneumatique le
Cela ne fonctionne plus
Ahmed Mostafa
@ AhmedMostafa Pouvez-vous laisser les autres savoir où vous avez essayé?
Rahul Thakur
1
Fonctionne pour oracle-java9-installeraussi.
Kohányi Róbert
1
ce travail parfait avec l'image basée sur google / cloud-sdk
Xin Meng
13

La réponse de @gertvdijk à l' appui est la description contenue dans le billet d'origine sur le PPA de webupd8.

Mise à jour 2: le programme d'installation nécessite maintenant que vous acceptiez la licence Oracle avant de commencer l'installation. Ceci n'est requis qu'une fois. Si, pour une raison quelconque, vous avez besoin d'automatiser l'installation, vous pouvez exécuter la commande suivante pour accepter automatiquement la licence Oracle:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | \
sudo /usr/bin/debconf-set-selections
Hosam Aly
la source
C'est la ligne de magie dont j'avais besoin pour mon installation silencieuse d'Oracle Java - merci @Hosam
Phantomwhale
Vous êtes les bienvenus @Phantomwhale
Hosam Aly
Est-ce que je me trompe ou y at-il un caractère "/" manquant / supplémentaire dans votre réponse?
David
11

J'ai vérifié la phrase suivante pour moi en utilisant 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
Keniee van
la source
J'ai essayé et ça ne marche pas.
Ahmed Mostafa
Confirmé de travailler pour moi sur docker-ce 18.05 sur Kubuntu 18.04: D installation dans un i386/ubuntu:18.04conteneur.
BeepDog
2

Pour une installation java silencieuse, vous pouvez essayer open-jdk:

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

Essayez aussi ceci pour plus de paquets / extensions open-jdk ...

sudo apt-cache search openjdk

Sam
la source
Cette solution a très bien fonctionné. sudo apt-get install -y openjdk-7-jdk
Layke le
0

Voici un extrait du fichier Docker que j'ai utilisé pour créer avec succès une image de menu fixe basée sur Debian:

( Référence )

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
SteoG5972
la source