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?

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.



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


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

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

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.