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à !

lundi 18 juillet 2016

Ajouter un dépôt en ligne de commande sous Linux

Quand on installe un logiciel sous Linux, on a souvent besoin d'ajouter un nouveau dépôt au fichier /etc/apt/sources.list.

On peut évidemment éditer le fichier précédent avec les droits administrateurs, mais on va le faire ici de manière non interactive.

Si par exemple on veut ajouter le dépôt wheezy-backports à une version wheezy de Debian, on essaiera:

sudo echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list

et on se heurtera au message suivant:

bash: /etc/apt/sources.list: Permission non accordée

En fait ici la commande echo n'est pas lancée avec les droits administrateurs et le mot clé sudo n'est pas pris en compte ! C'est assez surprenant. L'erreur doit venir du fait qu'on utilise une redirection.

En revanche, la commande suivante:

sudo cp /etc/apt/sources.list .
user@machine:~$ ls -l sources.list 
-rw-r--r-- 1 root root 620 juil. 18 11:30 sources.list

crée bien un fichier ayant les droits root.

Pour ajouter un dépôt en ligne de commande, on utilisera plutôt la commande tee avec le flag -a pour "append":

echo "deb http://http.debian.net/debian wheezy-backports main" | sudo tee -a /etc/apt/sources.list

De cette façon, le dépôt a bien été ajouté.

Si quelqu'un sait pourquoi la première façon de faire échoue, ça m'intéresse !

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.