Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

samedi 25 mai 2019

Les versions d'OpenJDK du dépôt Debian

Dans les versions précédentes de Debian, Debian Jessie, Debian fournissait l'OpenJDK en version 6 et 7.

Maintenant qu'on est passé à Debian Stretch et que les versions 9 et 10 du JDK sont "remplacées" par les versions 11 et 12, Debian fournit les versions 8 et 11 de l'OpenJDK.

Donc, pourvu que l'on crée le fichier suivant:

root@324a074e5614:/# cat /etc/apt/sources.list.d/backports.list 
deb http://deb.debian.org/debian stretch-backports main

On dispose des paquets suivants:

root@324a074e5614:/# apt-cache search ^openjdk-
openjdk-8-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-8-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-8-doc - OpenJDK Development Kit (JDK) documentation
openjdk-8-jdk - OpenJDK Development Kit (JDK)
openjdk-8-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-8-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-8-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-8-jre-zero - Alternative JVM for OpenJDK, using Zero/Shark
openjdk-8-source - OpenJDK Development Kit (JDK) source files
openjdk-8-jre-dcevm - Alternative VM for OpenJDK 8 with enhanced class redefinition
openjdk-11-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-11-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-11-doc - OpenJDK Development Kit (JDK) documentation
openjdk-11-jdk - OpenJDK Development Kit (JDK)
openjdk-11-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-11-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-11-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-11-jre-zero - Alternative JVM for OpenJDK, using Zero
openjdk-11-source - OpenJDK Development Kit (JDK) source files
openjdk-11-jre-dcevm - Alternative VM for OpenJDK 11 with enhanced class redefinition

à savoir l'OpenJDK en version 8 et 11, décliné en JDK et JRE et pour chaque paquet, une version normale et une headless (sans GUI) ainsi que la doc et les paquets sources.

On peut donc installer l'OpenJDK avec une commande apt-get install .. et pourvu qu'on ait installé le paquet java-package on peut passer d'un JDK à l'autre avec la commande update-java-alternatives dont on a déjà parlé.

Pour ceux qui douteraient de la version que l'on peut installer:

root@8351575db5f2:/# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1~deb9u1-b01)
OpenJDK 64-Bit Server VM (build 25.212-b01, mixed mode)

C'est donc bien la dernière version du JDK 8.

root@8351575db5f2:/# java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+7-Debian-1bpo92)
OpenJDK 64-Bit Server VM (build 11.0.3+7-Debian-1bpo92, mixed mode, sharing)

Et il en est de même pour la version 11.

Je trouve que c'est un peu dommage de ne pas pouvoir installer le JDK 9 et 10, dans la mesure où Oracle précise bien que c'est plus compliqué de passer de Java 8 à Java 9 que de Java 9 aux versions 10, 11 et 12.

Et malheureusement, la version 12 n'est pas présente dans les dépots puisque sortie le 18 avril 2019.

On verra bien ce que ça donnera avec Debian Buster qui doit sortir prochainement, mais apparemment on n'aura "que" les versions 11 et 12. De quoi nous faire comprendre que si on est encore en Java 8 en 2019, on est à la traîne, comme si on ne le savait pas déjà !

vendredi 13 mai 2016

Installer proprement Java sur Debian

Pour installer Java sous Linux, vous avez le choix entre les façons de faire suivantes:

  • Installer un paquet JRE ou JDK de l'OpenJDK fourni par votre système,
  • Télécharger Java sur le site d'Oracle et l'installer à la main

On s'intéressera dans ce billet à la deuxième façon de faire. Si vous utilisez Red Hat, comme Oracle fournit un paquet au format rpm, l'installation sera simple.

En revanche, lorsque vous avez une archive .tar.gz du JDK ou du JRE, c'est le cas si votre système est Debian, deux solutions s'offrent à vous:

  • décompresser la tarball dans le répertoire $HOME de votre utilisateur,
  • le faire dans /opt et avoir ainsi Java disponible pour tous les utilisateurs de votre système

Encore une fois on s'intéressera ici à la deuxième façon de faire, mais on ne se contentera pas de décompresser l'archive à la main.

En effet, il existe dans la section contrib du dépôt Debian un paquet nommé java-package avec lequel on peut fabriquer un paquet au format .deb à partir de la tarball du JRE ou du JDK.

On procédera donc comme suit:

Etape 1: Ajouter la section contrib au fichier /etc/apt/sources.list

deb http://ftp.fr.debian.org/debian/ jessie main contrib
deb-src http://ftp.fr.debian.org/debian/ jessie main contrib

Etape 2: Installer le paquet java-package

sudo apt-get install java-package

Etape 3: Créer un paquet Debian à partir du JDK ou JRE d'Oracle

fakeroot make-jpkg Téléchargements/jdk-8u73-linux-x64.tar.gz

On voit qu'on ne le fait pas en root, on aurait une erreur sinon.

Etape 4: Installer le paquet Debian qu'on vient de générer

dpkg -i oracle-java8-jdk_8u73_amd64.deb

La procédure décrite ici pour installer Java à partir d'un paquet Debian .deb que l'on génère présente les avantages suivants:

  • Java est disponible pour tous les utilisateurs
  • Etant installé via un paquet natif du système, il peut être facilement supprimé
  • On peut très facilement passer d'une version de Java à une autre avec la commande update-java-alternatives

mercredi 2 mars 2016

Passer facilement d'une version de Java à l'autre sous Linux

On a vu dans un billet précédent comment installer Java sur Linux en utilisant les JDK ou JRE fournis par le système.

Par exemple sur Debian Wheezy, j'ai la configuration suivante:

which java | xargs readlink -e
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java

Imaginons maintenant que j'ai installé l'OpenJDK en versions 6 et 7 et que je travaille sur deux projets, un en Java 7 et l'autre en Java 6. Je vais avoir besoin de passer facilement d'une version de Java à l'autre.

Le paquet java-common est là pour ça. Ce paquet fournit la commande update-java-alternatives qui permet de:

update-java-alternatives
usage: update-java-alternatives [--jre-headless] [--jre] [--plugin] [ -t|--test|-v|--verbose]
           -l|--list [<jname>]
           -s|--set <jname>
           -a|--auto
           -h|-?|--help

Lister les JDK ou JRE installés sur le système:

update-java-alternatives --list
java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64

Changer le JDK ou JRE par défaut du système:

update-java-alternatives -s java-1.7.0-openjdk-amd64

SI vous regardez un petit peu, vous verrez que la commande update-java-alternatives modifie tous les liens dans /etc/alternatives pointant vers un binaire fourni par le JDK ou le JRE.

Dernière chose update-java-alternatives doit être lançée depuis le compte root.

- page 1 de 2