Mettre à jour le JDK Java sur Debian Lenny
C'est une vidéo en live, je n'ai pas réalisé de montage. Du coup, comme il s'agit d'une vieille machine de test, je suis désolé pour le passage concernant la construction du paquet qui est un peu long. :/ J'espère juste que votre machine est plus rapide que mon vieux bousin :)
Si vous avez déjà installé la version Java fournie par la distribution (cf 1. & 2.), vous pouvez directement vous rendre au point 3.
1. Modifier son sources.list
Avant de commencer, il faut d'abord s'assurer qu'on a accès aux dépôts complémentaires (les paquets Java sont dans non-free
et java-package
est dans contrib
). Modifiez votre /etc/apt/sources.list
en conséquence.
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free deb http://security.debian.org/ lenny/updates main contrib non-free deb-src http://security.debian.org/ lenny/updates main contrib non-freeOn update ses sources :
# apt-get update
2. Installer le JDK 6 Debian
Pour maintenir Java, on va s'appuyer sur certains fichiers fournis par l'installation standard de la Debian. Dans un premier temps, on va donc installer le JDK 6 Java classiquement. A ce jour, c'est l'update 12 qui sera installée via le dépôt non-free
.
# apt-get install sun-java6-{jdk,plugin} # update-java-alternatives -s java-6-sunPour contrôle :
$ java -version java version "1.6.0_12" Java(TM) SE Runtime Environment (build 1.6.0_12-b04) Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)
On vérifie que c'est fonctionnel en se rendant sur java.com.
3. Générer et installer le dernier JDK
a. On récupère le dernier JDK chez Sun (Oracle). Rien de particulier à ce niveau, il suffit de se laisser guider.
b. On installe ensuite le paquet java-package
# apt-get install java-package
c. Avant de pouvoir générer le paquet contenant la mise à jour, on va corriger un fichier qui pose soucis sur Lenny car il ne prend pas en compte plus de 9 update pour Java 6 (c'est balot :/).
# vi +48 /usr/share/java-package/sun-j2sdk.shet modifier la ligne comme suit :
"jdk-6u"[0-9][0-9]"-linux-i586.bin") # SUPPORTEDModification de la ligne 49 :
j2se_version=1.6.0+update${archive_name:6:2}${revision}Suivant votre architecture, vous serez amenés à modifier les lignes 91-92 (pour amd64) ou 96-97 (pour x64).
d. On passe maintenant en mode utilisateur et on génère la paquet à partir des sources du téléchargement
$ fakeroot make-jpkg /chemin_vers_jdk_sun/jdk-6u20-linux-i586.bin
e. On repasse en root et on installe le paquet généré
# dpkg -i sun-j2sdk1.6_1.6.0+update20_i386.deb
4. Finaliser l'installation
Malheureusement, le paquet généré à l'aide de java-package
ne permet pas d'utiliser tel quel update-java-alternatives
. Il faut donc procéder à quelques aménagements.
a. On link notre nouveau JDK dans /usr/lib/jvm
# cd /usr/lib/jvm # ln -s /usr/lib/j2sdk1.6-sun j2sdk1.6-sun
b. update-java-alternatives
a besoin de son fichier .jinfo
. Comme il n'est pas généré automatiquement par l'installation de notre paquet 'maison', on va le créer en s'appuyant sur celui qui existe pour java-6-sun
# cat .java-6-sun.jinfo|sed -e 's/java-6-sun[0-9\.-]*/j2sdk1.6-sun/'|sed -e 's/java-6-sun/j2sdk1.6-sun/'|sed -e 's/63/65/' > .j2sdk1.6-sun.jinfo
c. update-java-alternatives
positionne l'alternative mais ne la crée pas. On doit donc préalablement créer les alternatives. Cela peut être très fastidieux compte tenu du nombre d'alternatives à créer pour Java. Il est finalement plus rapide et confortable d'utiliser un script créé pour l'occasion :
#!/bin/sh # install-alternatives-for-java-package.sh set -e PATH=/sbin:/bin:/usr/sbin:/usr/bin # modifier jdiralias pour les futures version de Java (1.7 ?) jdiralias=j2sdk1.6-sun ###################### priority=65 basedir=/usr/lib/$jdiralias basediralias=/usr/lib/jvm/$jdiralias jre_tools='ControlPanel java java_vm javaws jcontrol keytool pack200 policytool rmid rmiregistry unpack200 orbd servertool tnameserv' jdk_tools='HtmlConverter appletviewer apt extcheck idlj jar jarsigner java-rmi.cgi javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc' browser_dirs='xulrunner-addons firefox iceape iceweasel mozilla midbrowser xulrunner' PLUGIN=libnpjp2.so PLUGINPTH=/usr/lib/jvm/$jdiralias/jre/lib/i386/$PLUGIN for i in $jre_tools; do update-alternatives \ --install \ /usr/bin/$i \ $i \ $basediralias/jre/bin/$i \ $priority done for i in $jdk_tools; do update-alternatives \ --install \ /usr/bin/$i \ $i \ $basediralias/bin/$i \ $priority done for browser_dir in $browser_dirs; do if [ $browser_dir = xulrunner-addons ]; then browser=xulrunner-1.9 else browser=$browser_dir fi update-alternatives --quiet --install \ /usr/lib/$browser_dir/plugins/libjavaplugin.so \ $browser-javaplugin.so \ $PLUGINPTH \ $priority done update-alternatives \ --install \ /usr/bin/jexec \ jexec \ $basediralias/jre/lib/jexec \ $priority exit 0
d. On lance le scipt qui va créer les alternatives à notre place :
# ./install-alternatives-for-java-package.sh
e. Finalement, on utilise update-java-alternatives
pour mettre à jour les alternatives avec notre nouveau JDK :
# update-java-alternatives -s j2sdk1.6-sun
$ java -version java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
Tout cela peut paraître un peu long pour une mise à jour mais il n'en est rien (la vidéo le démontre puisqu'il faut moins de 10mn pour tout installer). De plus, pour les prochaines mises à jour, on pourra s'arrêter au 3. (tout le 4. devenant inutile tant qu'on ne passe pas à un Java 7 :p).
En résumé, des efforts minimes pour tenir à jour proprement son JDK "à la Debian".
1 Commentaire
Merci bien :-)