Activer le plugin Java pour Iceweasel et Chromium à la mode Debian

Note : J'utilise OpenJDK comme JRE, vu que les paquets java-sun ont été retirés des dépôts Debian. De plus, j'utilise la version 7 d'OpenJDK mais les mêmes manipulations fonctionnent pour la version 6.

C'est en soit assez simple sur un système n'ayant jamais eu de Java installé auparavant, puisqu'il suffit d'installer OpenJDK pour le JRE ainsi qu'IcedTea, qui est le plugin utilisable par Chromium et Iceweasel.

# aptitude install openjdk-7-jre icedtea-7-plugin

Et voilà, c'est tout !

Sur un système ayant eu plusieurs Java d'installés, en revanche, les résidus des précédentes versions peuvent gêner. En effet, Debian utilise un système nommé alternatives. Si vous ne savez pas de quoi il s'agit, jetons un œil dans ce bon vieux man :

Il est possible d'installer, sur un même système et en même temps, des programmes
qui remplissent des fonctions identiques ou semblables. Par exemple, beaucoup de
systèmes installent plusieurs éditeurs de texte en même temps. Cela permet à
chaque utilisateur d'un système de choisir, s'il le désire, un éditeur de texte
différent ; mais cela rend les choses difficiles pour le programme qui doit choi‐
sir un bon éditeur de texte quand l'utilisateur n'a pas fait de choix précis.

Le système Debian des « alternatives » essaie de résoudre ce problème. Tous les
fichiers qui proposent des fonctions interchangeables se servent d'un nom géné‐
rique qui se trouve dans l'arborescence. Le système des « alternatives » et
l'administrateur système font connaître ensemble le fichier qui est réellement
visé par ce nom générique. Par exemple, si les éditeurs de texte ed(1) et nvi(1)
sont tous les deux installés, le système des « alternatives » fait que le nom
générique /usr/bin/editor renvoie par défaut à /usr/bin/nvi. L'administrateur sys‐
tème peut remplacer cette assignation par /usr/bin/ed et le système des « alterna‐
tives » ne la changera pas tant qu'on ne lui aura pas demandé explicitement de le
faire.

La problématique est la même pour Java : vous pouviez utiliser le java-sun, openjdk ou gij par exemple. Or, après l'installation d'OpenJDK et d'IcedTea, voici ce que donnent les fichiers d'alternatives :

mymachine:/etc/alternatives# ls -l | grep java
lrwxrwxrwx 1 root root  64 avril 28 12:54 firefox-javaplugin.so -> /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
lrwxrwxrwx 1 root root  64 avril 28 12:54 iceweasel-javaplugin.so -> /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
lrwxrwxrwx 1 root root  55 déc.   3 17:37 itweb-settings -> /usr/lib/jvm/java-6-openjdk-i386/jre/bin/itweb-settings
lrwxrwxrwx 1 root root  65 déc.   3 17:37 itweb-settings.1.gz -> /usr/lib/jvm/java-6-openjdk-i386/jre/man/man1/itweb-settings.1.gz
lrwxrwxrwx 1 root root  45 mai   14 16:36 java -> /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java
lrwxrwxrwx 1 root root  55 mai   14 16:36 java.1.gz -> /usr/lib/jvm/java-7-openjdk-i386/jre/man/man1/java.1.gz
lrwxrwxrwx 1 root root  46 mai   14 16:36 jexec -> /usr/lib/jvm/java-7-openjdk-i386/jre/lib/jexec
lrwxrwxrwx 1 root root  64 avril 28 12:54 mozilla-javaplugin.so -> /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
lrwxrwxrwx 1 root root  54 janv.  8  2010 pluginappletviewer -> /usr/lib/jvm/java-6-openjdk/jre/bin/pluginappletviewer
lrwxrwxrwx 1 root root  64 avril 28 12:54 xulrunner-1.9-javaplugin.so -> /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so
lrwxrwxrwx 1 root root  64 avril 28 12:54 xulrunner-javaplugin.so -> /usr/lib/jvm/java-6-sun/jre/plugin/i386/ns7/libjavaplugin_oji.so

Vous voyez qu'il s'agit en fait de liens symboliques pointant en général vers des exécutables. Dans mon cas, certains liens pointent encore vers la JVM java-sun ou vers openjdk-6 alors que j'ai installé tout à l'heure la version 7.

Faisons donc un peu de ménage :

# update-alternatives --all

La commande va parser tout le dossier /etc/alternatives et proposer à chaque fois les alternatives possibles. Vous devrez à chaque fois sélectionner la version provenant de l'OpenJDK 7.

Voici compilation de mes choix concernant Java :

[...]
Il existe 2 choix pour l'alternative itweb-settings (qui fournit /usr/bin/itweb-settings).

  Sélection   Chemin                                                   Priorité  État
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/itweb-settings   1061      mode automatique
  1            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/itweb-settings   1061      mode manuel
  2            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/itweb-settings   1060      mode manuel

Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :2
update-alternatives: utilisation de « /usr/lib/jvm/java-7-openjdk-i386/jre/bin/itweb-settings » pour fournir « /usr/bin/itweb-settings » (itweb-settings) en mode manuel.

Il n'existe qu'une « alternative » dans le groupe de liens jar : /usr/bin/fastjar.
Rien à configurer.

Il existe 3 choix pour l'alternative java (qui fournit /usr/bin/java).

  Sélection   Chemin                                         Priorité  État
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      mode automatique
  1            /usr/bin/gij-4.4                                1044      mode manuel
  2            /usr/bin/gij-4.6                                1046      mode manuel
  3            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      mode manuel

Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :

Il existe 2 choix pour l'alternative javaws (qui fournit /usr/bin/javaws).

  Sélection   Chemin                                           Priorité  État
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/javaws   1061      mode automatique
  1            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/javaws   1061      mode manuel
  2            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/javaws   1060      mode manuel

Appuyez sur <Entrée> pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :2
update-alternatives: utilisation de « /usr/lib/jvm/java-7-openjdk-i386/jre/bin/javaws » pour fournir « /usr/bin/javaws » (javaws) en mode manuel.

Il n'existe qu'une « alternative » dans le groupe de liens jexec : /usr/lib/jvm/java-7-openjdk-i386/jre/lib/jexec.
Rien à configurer.

Il n'existe qu'une « alternative » dans le groupe de liens mozilla-javaplugin.so : /usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/IcedTeaPlugin.so.
Rien à configurer.

Il n'existe qu'une « alternative » dans le groupe de liens pack200 : /usr/lib/jvm/java-7-openjdk-i386/jre/bin/pack200.
Rien à configurer.

Et voilà. À vous le Java sur Chrome et Iceweasel (et probablement tous les navigateurs supportant les plugins Mozilla ou NPAPI). Vous pouvez vérifier si le plugin est activé en allant sur chrome://plugins/ (Chromium) ou about:plugins (Iceweasel).

Il ne reste plus qu'à vérifier si le plugin fonctionne sur http://www.java.com/en/download/testjava.jsp

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>