Sur Debian comme sur la majorité des distributions Linux, il est possible d’avoir plusieurs versions d’un composant, comme par exemple Python ou Java…
Sauf que si on n’appelle pas la version exacte, on se retrouve bien souvent confronté à des erreurs.
Il est possible via une simple commande, de changer de version du programme pour l’ensemble du système : update-alternatives
Python :
Pour modifier facilement la version par défaut de python dans votre système, il faut avant tout connaître les versions installées sur votre machine. Pour cela, nous lançons un simple « ls » dans le bon chemin :
1 2 3 4 5 6 7 8 9 |
thierry@thierry-Athlon:~$ ls /usr/bin/python* /usr/bin/python /usr/bin/python2.7 /usr/bin/python3 /usr/bin/python3.6m /usr/bin/python2 /usr/bin/python2-pbr /usr/bin/python3.6 /usr/bin/python3m |
Une fois que l’on connaît les versions disponible, on peut regarder ce que le système connaît réellement :
1 2 |
thierry@thierry-Athlon:~$ update-alternatives - -list python update-alternatives: erreur: pas d'alternatives pour python |
Visiblement… pas grand chose ! Il faut donc lui décrire les versions disponible en lançant les commandes suivantes :
1 2 |
thierry@thierry-Athlon:~$ sudo update-alternatives - -install /usr/bin/python python /usr/bin/python3 1 update-alternatives: utilisation de « /usr/bin/python3 » pour fournir « /usr/bin/python » (python) en mode automatique |
1 2 |
thierry@thierry-Athlon:~$ sudo update-alternatives - -install /usr/bin/python python /usr/bin/python2 2 update-alternatives: utilisation de « /usr/bin/python2 » pour fournir « /usr/bin/python » (python) en mode automatique |
Maintenant, si on liste les versions de python disponible dans le système, nous avons :
1 2 3 |
thierry@thierry-Athlon:~$ update-alternatives - -list python /usr/bin/python2 /usr/bin/python3 |
En lançant la commande « update-alternatives« , on va pouvoir changer de version comme on le souhaite :
Il existe 2 choix pour l’alternative python (qui fournit /usr/bin/python).
1 2 3 4 5 6 7 8 9 10 |
thierry@thierry-Athlon:~$ sudo update-alternatives --config python Sélection Chemin Priorité État 0 /usr/bin/python2 2 mode automatique 1 /usr/bin/python2 2 mode manuel 2 /usr/bin/python3 1 mode manuel Appuyez sur pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné :2 update-alternatives: utilisation de « /usr/bin/python3 » pour fournir « /usr/bin/python » (python) en mode manuel |
En lançant la commande « python –version« , vous retrouverez alors la version de python choisi précédemment.
Java :
1 |
sudo update-alternatives - -config java |
Si vous installez une version de java que vous n’avez pas sur votre machine avec la commande « sudo apt-get install openjdk-8-jdk openjdk-8-jre » par exemple, cette version va s’installer, mais ne sera peut être pas celle qui sera utilisée lorsque vous appellerez la commande « java »; faites l’essai avec la commande « java -version« …
En utilisant la commande « update-alteratives – -config java« , elle vous retournera la liste des versions de Java installées et vous permettra de sélectionner celle que vous souhaitez :
1 2 3 4 5 6 7 8 |
thierry@thierry-Athlon:~$ sudo update-alternatives - -config java Il existe 2 choix pour l'alternative java (qui fournit /usr/bin/java). Appuyez sur pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 mode automatique 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 mode manuel 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 mode manuel Appuyez sur pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné |
[tds_note]La commande « update-alternatives » n’existe pas sous Linux Mint, il faut alors utiliser la commande « update-java-alternatives -s … » (tabuller pour trouver la suite).[/tds_note]
[tds_note]Sous RedHat/CentOS, la commande « sudo alternatives –config java » sera celle que l’on utilisera pour ce genre de distribution[/tds_note]
Autres programmes…
La page de « man » de « update-alternatives » indique qu’il est possible d’utiliser ce système pour différents composant, comme par exemple changer d’éditeur de texte (vi, nano, joe, etc…), de version de PHP, etc…