Mise à jour vers Asdf-VM 0.16
J’utilise asdf depuis longtemps et je dois dire que c’est un outil que j’adore. Il me permet de gérer facilement plusieurs versions de langages et d’outils de développement sans jamais me compliquer la vie. Avec la sortie de la version 0.16, une mise à jour majeure a été introduite : réécriture complète en Go, nouveaux comportements et suppression de certaines commandes. Je vous propose un tour d’horizon des nouveautés et de la procédure à suivre pour une mise à jour sans encombre.
Réécriture de asdf-VM en Go
La version 0.16 marque un tournant majeur pour asdf : l’outil a été entièrement réécrit en Go, alors qu’il était historiquement basé sur des scripts Bash. Ce changement peut sembler anodin, mais il apporte des avantages considérables :
- Performances améliorées : Go étant un langage compilé, asdf devient plus rapide et réactif.
- Maintenance simplifiée : Le code est plus structuré, facilitant les évolutions futures et la contribution de la communauté.
J’ai tout de suite remarqué que certaines opérations sont nettement plus fluides, notamment l’installation et la gestion des plugins. Avant, certaines commandes mettaient quelques secondes à s’exécuter, maintenant tout est quasi-instantané.
Mais attention, cette refonte a aussi des implications pratiques : les utilisateurs doivent maintenant installer un binaire au lieu de simplement cloner un dépôt Git. Voyons comment procéder à cette mise à jour sans encombre.
Procédure de mise à jour
Pour passer à la version 0.16 d’asdf sans perdre vos configurations, voici la procédure recommandée. Contrairement aux mises à jour précédentes, il ne suffit plus de mettre à jour le dépôt Git, car asdf est maintenant distribué sous forme de binaire compilé.
La première étape consiste à télécharger la version 0.16 depuis la page des
releases GitHub ↗. Sélectionnez le
fichier correspondant à votre système d’exploitation et placez-le dans un
répertoire accessible via votre $PATH
.
Exemple pour Linux :
wget https://github.com/asdf-vm/asdf/releases/download/v0.16.2/asdf-v0.16.2-linux-amd64.tar.gztar -xvzf asdf-v0.16.2-linux-amd64.tar.gz -C ${HOME}/.local/binchmod +x ${HOME}/.local/bin/asdfrm ~/.asdf/bin/asdf # Supprimez l'ancien executable
Enlevez le path de l’ancienne version d’asdf de votre $PATH
et ajoutez le
nouveau path :
# . $HOME/.asdf/asdf.shfpath=(${ASDF_DIR}/completions $HOME/.zsh/completions $fpath)export PATH=${HOME}/.local/bin:$PATH
Si vous utilisiez une installation existante, asdf stockait vos données dans
~/.asdf
. Avec la nouvelle version, il est possible d’indiquer un répertoire
spécifique pour éviter de perdre les configurations existantes :
export ASDF_DATA_DIR="$HOME/.asdf"
Vérifiez qu cette ligne à votre .bashrc, .zshrc ou autre fichier de configuration shell pour qu’elle soit chargée à chaque session.
La nouvelle version d’asdf nécessite que le dossier shims
soit en tête de
votre PATH. Assurez-vous que cette ligne est bien présente dans votre
fichier de configuration shell :
export PATH="$ASDF_DATA_DIR/shims:$PATH"
Puis rechargez votre shell :
source ~/.bashrc # ou source ~/.zshrc selon votre configuration
Une fois la mise à jour effectuée, assurez-vous qu’asdf est bien installé et fonctionne correctement avec :
asdf versionversion: v0.16.2
MANAGE PLUGINSasdf plugin add <name> [<git-url>] Add a plugin from the plugin repo OR, add a Git repo as a plugin by specifying the name and repo urlasdf plugin list [--urls] [--refs] List installed plugins. Optionally show git urls and git-refasdf plugin list all List plugins registered on asdf-plugins repository with URLsasdf plugin remove <name> Remove plugin and package versionsasdf plugin update <name> [<git-ref>] Update a plugin to latest commit on default branch or a particular git-refasdf plugin update --all Update all plugins to latest commit on default branch
MANAGE TOOLSasdf current Display current version set or being used for all packagesasdf current <name> Display current version set or being used for packageasdf help <name> [<version>] Output documentation for plugin and toolasdf install Install all the package versions listed in the .tool-versions fileasdf install <name> Install one tool at the version specified in the .tool-versions fileasdf install <name> <version> Install a specific version of a packageasdf install <name> latest[:<version>] Install the latest stable version of a package, or with optional version, install the latest stable version that begins with the given stringasdf latest <name> [<version>] Show latest stable version of a packageasdf latest --all Show latest stable version of all the packages and if they are installedasdf list <name> [version] List installed versions of a package and optionally filter the versionsasdf list all <name> [<version>] List all versions of a package and optionally filter the returned versionsasdf set [-u] [-p] <name> <versions...> Set a tool version in a .tool-version in the current directory, or a parent directory.asdf uninstall <name> <version> Remove a specific version of a packageasdf where <name> [<version>] Display install path for an installed or current versionasdf which <command> Display the path to an executable
UTILSasdf exec <command> [args...] Executes the command shim for current versionasdf env <command> [util] Runs util (default: `env`) inside the environment used for command shim execution.asdf info Print OS, Shell and ASDF debug information.asdf version Print the currently installed version of ASDFasdf reshim <name> <version> Recreate shims for version of a packageasdf shimversions <command> List the plugins and versions that provide a command
RESOURCESGitHub: https://github.com/asdf-vm/asdfDocs: https://asdf-vm.com
PLUGIN direnv asdf direnv _asdf_cached_envrc.bash asdf direnv envrc.bash asdf direnv hook-asdf.bash asdf direnv install.bash asdf direnv local.bash asdf direnv setup.bash asdf direnv shell.bash
"Late but latest"-- Rajinikanth
Si la commande renvoie la version 0.16.0, la mise à jour a été réussie !
Il faut également par sécurité mettre à jour les shims :
asdf reshim
En suivant ces étapes, vous bénéficiez de la nouvelle architecture en Go tout en conservant vos plugins et versions installées. Maintenant que votre asdf est à jour, voyons quels sont les changements majeurs à prendre en compte.
Changements majeurs de la version 0.16
Avec la version 0.16, plusieurs modifications importantes ont été introduites. Certaines commandes ont été renommées, d’autres supprimées, et il y a quelques ajustements à connaître pour éviter les surprises.
Renommage des commandes avec des tirets
L’un des changements majeurs est la suppression des tirets dans certaines commandes. Voici la correspondance entre les anciennes et nouvelles versions :
Ancienne commande | Nouvelle commande |
---|---|
asdf plugin-add <plugin> | asdf plugin add <plugin> |
asdf plugin-remove <plugin> | asdf plugin remove <plugin> |
asdf plugin-list | asdf plugin list |
Exemple d’utilisation :
Avant :
asdf plugin-add nodejs
Après :
asdf plugin add nodejs
Fusion de global
et local
en set
Les commandes pour définir une version globale ou locale d’un outil ont été
remplacées par une seule commande asdf set
avec des options --parent
et
--home
.
Ancienne commande | Nouvelle commande |
---|---|
asdf global <outil> <version> | asdf set <outil> <version> --home |
asdf local <outil> <version> | asdf set <outil> <version> --parent |
Exemple d’utilisation :
Avant :
asdf global nodejs 18.0.0
Après :
asdf set nodejs 18.0.0 --home
Suppression de la mise à jour automatique
L’ancienne commande permettant de mettre à jour asdf lui-même a été supprimée :
Ancienne commande | Nouvelle méthode |
---|---|
asdf update | Mise à jour manuelle via téléchargement du binaire ou gestionnaire de paquets |
Exemple d’alternative :
-
Pour mettre à jour manuellement, téléchargez le nouveau binaire depuis GitHub ↗.
-
Si vous utilisez Homebrew (macOS), vous pouvez faire :
Terminal window brew upgrade asdf
Changements divers et améliorations internes
Bien que moins visibles, d’autres ajustements ont été effectués :
- Les erreurs et messages d’aide sont plus explicites
- L’installation des plugins est plus rapide
- Certains alias et options obsolètes ont été retirés
En résumé, si vous utilisez asdf dans des scripts, pensez à mettre à jour vos commandes pour éviter des erreurs liées à ces changements. Dans le prochain chapitre, je vous donne mon avis sur cette mise à jour et quelques recommandations.
Conclusion
Personnellement, j’apprécie cette nouvelle version, car elle apporte un gain
de fluidité notable dans l’utilisation quotidienne d’asdf. Cependant, il faut
prendre le temps d’adapter ses habitudes, notamment avec la suppression des
tirets dans les commandes et la fusion des commandes global
et local
en
set
.
Si vous utilisez asdf dans des scripts d’automatisation, je vous recommande
vivement de vérifier et modifier vos commandes pour éviter toute erreur.
Pensez également à mettre à jour votre $PATH
et à bien configurer
ASDF_DATA_DIR
pour assurer une migration en douceur.
Pour ceux qui découvrent asdf, je vous invite à l’essayer sans plus tarder. C’est un outil puissant et polyvalent qui vous fera gagner un temps précieux dans la gestion de vos environnements de développement.