Article in English can be found on dev.to/arxeiss/asdf-manage-multiple-runtime-versions-1fn9
Proč asdf, když na Linuxu je apt, snap či jiný balíčkovací nástroj? Hlavním důvodem je především možnost mít nainstalovaných více verzí stejného programu. Pro každý adresář, tedy i projekt, používat jinou zvolenou verzi. A samozřejmě je kdykoli změnit, provést downgrade či aktualizaci.
Malou demonstraci lze vidět na obrázku níže. Stačilo se přepnout do jiného adresáře a příkaz node
automaticky spouštěl jinou nainstalovanou verzi. Navíc lze vidět, že kromě NodeJS je nainstalováno i Ruby a protoc neboli Protocol Buffers. Podobných pluginů do ASDF jsou stovky.
Instalace i aktualizace přímo z gitu
Nástroj asdf je relativně šikovný pomocník, přitom jeho instalace je velmi jednoduchá. Prerekvizity jsou pouze curl a git, takže stačí spustit sudo apt install curl git
a poté pomocí git clone
naklonovat poslední verzi. Vždy aktuální příkazy jsou v sekci Manage asdf - Install. Poté je ještě nutné přidat vše Shellu. Ukázky jsou v sekci Add to your Shell pro Bash, Fish i ZSH.
Pro aktualizaci není potřeba chodit daleko, jednoduše lze provést pomocí asdf update
. Odinstalování je ještě jednodušší, stačí vymazat přidané řádky do Shell skriptu a celou složku, která se vytvořila naklonování repozitáře.
asdf a $PATH
Podle nastavení výše bude vše fungovat jak má, ale pouze v shellu. Co když ale někdo nainstaluje například Intelephense (PHP Language server), který se instaluje globálně? Půjde spustit pouze přes shell, nikoli v SublimeText nebo VSCode. Proto je nutné přidat asdf shims do PATH. Následující řádky stačí vložit do ~/.profile
a poté se odhlásit a znovu přihlásit.
export PATH=$PATH:$HOME/.asdf/shims
Pluginy a asdf příkazy
Po čisté instalaci ASDF je nutné nainstalovat pluginy. Každý plugin je určen pro jeden runtime či nástroj. Existují pluginy pro jazyky jako je NodeJS, Ruby, Elixir, PHP, Python, ale i C#, .NET Core, Java. A také třeba nástroje jako je 1Password, GCloud, SQLite. Pluginů je momentálně přes 250. Důležité je se vždy prvně podívat, jestli sám plugin nemá nějaké závislosti.
Ukázka s NodeJS krok po kroku
# Vypíše aktuální verze pro daný adresář
asdf current # nyní vypíše: Oohes nooes ~! No plugins installed
# Nainstaluje nodejs plugin
asdf plugin-add nodejs
asdf current
# vypíše: nodejs ______ No version set. Run "asdf <global|shell|local> nodejs <version>"
Nyní je třeba vybrat verzi k nainstalování a poté ji aktivovat. Jenže NodeJS má prerekvizity popsané ve svém Readme. Konkrétně se jedná o import PGP klíčů. Stačí tedy z odkazu zkopírovat a spustit. Nebudu zde kopírovat příkazy, protože se mohou měnit. Následující kód pokračuje po importu.
# Vypíše všechny dostupné verze pro nodejs
asdf list all nodejs
# Nainstaluje vybranou verzi nodejs
asdf install nodejs 15.5.0
# Aktivuje nodejs verzi 15.5.0 jako globální
asdf global nodejs 15.5.0
Poslední 3 kroky lze samozřejmě opakovat s jinými verzemi. Namísto asdf global
je také možné použít asdf local
, který aktivuje danou verzi pouze pro daný adresář. V daném adresáři také vytvoří soubor .tool-versions
, který obsahuje aktivované verze. Ten lze přidat do gitu a ostatní kolegové mohou pomocí asdf install
nainstalovat všechny verze z tohoto souboru.
Osobní zkušenosti nebo tipy na podobné nástroje můžete sdílet v komentářích
K tomuto článku již není možné přidávat další komentáře