Exile on Keyboard St. - Blog sur Linux et Debian

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

samedi 21 décembre 2019

Gérer plusieurs versions de Java avec jEnv

Depuis la sortie de la version 9 de Java en 2017 et la nouvelle cadence de sortie des versions de Java décidée par Oracle, il devient de plus en plus difficile de ne travailler que sur une version de Java à la fois.

Se pose alors pour le développeur la question de comment passer d'une version à l'autre de Java, et si possible de façon simple.

Sur Debian, on a longtemps utilisé la commande update-java-alternatives mais elle présente plusieurs inconvénients:

  • L'utilisation d'une version de Java est globale à tout le système (liens symboliques dans /etc/alternatives)
  • Elle ne fonctionne qu'avec les JDK installés depuis les dépôts du système (utilisation des fichiers de métadonnées .jinfo)
  • Elle est spécifique à Debian (A vérifier mais il me semble que oui)

Heureusement, le projet jEnv vient à notre secours, et permet de passer très facilement d'un JDK à un autre.

1. Installation de jEnv

Pour installer jEnv, rien de plus simple:

On clone le repository Git:

git clone https://github.com/gcuisinier/jenv.git ~/.jenv

Puis on ajoute quelques lignes à la fin de notre fichier ~/.bash_profile ou ~/.bashrc

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile

Personnellement, j'ai déplacé ces lignes dans un fichier ~/.jenvrc pour les référencer ensuite dans ~/.bashrc:

if [ -f ~/.jenvrc ]; then
    . ~/.jenvrc
fi

mais ce n'est pas une obligation.

2. Configuration de jEnv

Une fois jEnv installé, on va lui indiquer quelles sont les versions de Java que l'on veux utiliser.

Au départ, aucune version de Java n'est connue de jEnv:

jenv versions

Si on ajoute un Java 9:

jenv add $HOME/jdk/jdk9/jdk-9.0.4/
openjdk64-9.0.4 added
9.0.4 added
9.0 added
9 added

Puis un Java 11:

jenv add $HOME/jdk/jdk11/jdk-11.0.2/
openjdk64-11.0.2 added
11.0.2 added
11.0 added
11 added

Les versions disponibles sont maintenant:

jenv versions
  11
  11.0
  11.0.2
  9
  9.0
  9.0.4
  openjdk64-11.0.2
  openjdk64-9.0.4

On voit que Jenv crée plusieurs tags vers le JDK ajouté.

3. Utilisation de jEnv

On a donc installé deux versions de Java, mais aucune n'est encore disponible.

Si on fait:

which java
/home/user/.jenv/shims/java

On voit que jEnv a "wrappé" la commande Java dans un script Shell.

3.1. Une version de Java globale

Définissons maintenant le Java 9 comme Java global au système:

jenv global 9

La commande précédente donne maintenant:

java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

Et tout nouveau terminal utilisera donc Java 9.

3.2. Une version de Java locale

Si maintenant, pour un projet particulier, j'ai besoin de Java 11, je peux le définir comme la version de Java à utiliser dans un répertoire particulier:

mkdir my-project
cd my-project
jenv local 11

Et le résultat est:

java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

Si je relance la commande pour connaître les versions disponibles:

jenv versions
* 11 (set by /home/user/my-project/.java-version)
  11.0
  11.0.2
  9
  9.0
  9.0.4
  openjdk64-11.0.2
  openjdk64-9.0.4

Et si je quitte ce projet, je reviens en Java 9:

cd
java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

Et j'ai donc:

jenv version
9 (set by /home/user/.jenv/version)

qui est la version globale:

jenv global
9

3.3. Une version de Java locale au Shell courant

On peut également changer la version de Java utilisée localement au Shell courant comme suit:

jenv shell 11

Par exemple, pour tester rapidement quelques lignes de Java grâce à au JShell de Java 9:

jenv shell 9 && jshell
|  Welcome to JShell -- Version 9.0.4
|  For an introduction type: /help intro

Comme on vient de le voir, jEnv est un outil très simple à utiliser pour passer d'une version de Java à une autre, et il ne dépend pas de la façon dont ont été installés les JDK pour être utilisé.

jEnv fait donc partie des outils que le développeur Java va adopter rapidement !

dimanche 8 décembre 2019

Installer mysql (MariaDB) sur Debian 10

Si vous avez besoin de mysql sur Debian, vous verrez rapidement que les paquets concernant mysql s'appèlent désormais:

  • mariadb-client
  • mariadb-server

L'installation se passe bien et je lis ça et là que le mot de passe par défaut de root est root ou qu'il n' y en a pas.

Essayons de nous connecter à mysql avec un mot de passe et aussi sans:

root@65b0d5bbd800:/# mysql -u root -p
Enter password: 
root@65b0d5bbd800:/# mysql -u root
Enter password: 

Je me fais jeter dans tous les cas :-(

D'ailleurs, dans le fichier de configuration de mysql, le mot de passe ne semble pas positionné. Et pour autant appuyer sur Entrée lors de la demande du mot de passe échoue !

root@65b0d5bbd800:/# cat /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = root
password = 
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = root
password = 
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Il faut donc changer le mot de passe de root, et pour ce faire je vous renvoie à ce billet qui explique comment redémarrer la base avec les contrôles d'accès désactivés afin de pouvoir positionner ce mot de passe.

vendredi 22 novembre 2019

Installer WebStorm ou IntelliJ IDEA facilement sous Linux

On va voir aujourd'hui comment installer WebStorm ou IDEA en une seule commande avec liar.

Les IDE de développement de JetBrains s'installent très facilement avec liar avec lequel on peut aussi créer les liens vers les exécutables par exemple dans $HOME/bin.

Mais, comme le répertoire bin de l'archive d'IntelliJ IDEA ou de WebStorm comporte des binaires que l'on utilise assez rarement, on peut se contenter d'installer WebStorm sans créer aucun lien vers les binaires comme suit:

liar install webstorm https://download.jetbrains.com/webstorm/WebStorm-2019.2.tar.gz

Il suffit même d'entrer:

liar install webstorm

puis d'appuyer sur la touche TAB pour disposer de l'URL de la dernière version disponible.

Ensuite, au premier démarrage de WebStorm, celui-ci nous propose de créer:

  • Une 'Desktop entry'
  • Un 'command line launcher'

Soit un raccourci dans les menus de l'environnement graphique (Mate, Gnome ...) que l'on pourra ensuite ajouter aussi sur le bureau.

Et le 'Command line launcher' sera créé dans /usr/local/bin en utilisant sudo, cette création sera facilitée si sudo a été configuré pour ne pas demander le mot de passe de l'utilisateur.

On pourra donc lancer webstorm ou idea depuis la ligne de commande pour ouvrir un projet avec:

idea .

ou importer un projet en lançant:

idea pom.xml

Enfin, ce qu'IDEA ou WebStorm propose au premier démarrage est possible à tout moment dans le menu Tools.

- page 2 de 59 -