asdf - wszechstronne narzędzie do zarządzania wersjami narzędzi i środowisk programistycznych

Konfiguracja i zarządzanie środowiskami programistycznymi to wyzwanie, z którym na co dzień mierzy się wielu testerów i specjalistów QA. asdf to potężne narzędzie wiersza poleceń, które pozwala zarządzać i przełączać się między różnymi wersjami środowisk programistycznych, takich jak Java, Kotlin, Node.js, Python, Ruby, Go oraz ich pakietami i bibliotekami, w tym Gradle, Maven, czy `Yarn.

asdf wyróżnia się możliwością zarządzania wersjami dla wielu środowisk programistycznych dzięki systemowi wtyczek. Obsługuje szeroką gamę języków i narzędzi. Każde narzędzie jest instalowane i zarządzane w zunifikowany sposób dzięki wspólnemu interfejsowi CLI. Pozwala to na uproszczenie codziennej pracy, ponieważ użytkownik nie musi uczyć się wielu różnych narzędzi do zarządzania poszczególnymi środowiskami (np. nvm dla Node.js, pyenv dla Pythona, rbenv dla Ruby).

Instalacja asdf

Aby zainstalować asdf na swoim systemie, postępuj zgodnie z dokumentacją dostępną na oficjalnej stronie: asdf Getting Started.

Przypadki użycia i przykłady

asdf doskonale sprawdza się w sytuacjach, gdy potrzebujesz pracować z różnymi wersjami narzędzi w zależności od projektu. Oto kilka typowych zastosowań.

Zarządzanie różnymi wersjami na przykładzie Python

Podobnie jak w przypadku Node.js, asdf umożliwia zarządzanie wersjami Pythona. Aby zainstalować konkretną wersję Python, wykonaj następujące kroki:

Dodaj wtyczkę Python do asdf:

1
> asdf plugin add python

Wyświetl listę dostępnych wersji:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
❯ asdf list all python | grep 3.13

3.13.0
3.13.0t
3.13-dev
3.13t-dev
3.13.1
3.13.1t
pypy2.7-7.3.13-src
pypy2.7-7.3.13
pypy3.9-7.3.13-src
pypy3.9-7.3.13
pypy3.10-7.3.13-src
pypy3.10-7.3.13

Zainstaluj wybraną wersję:

1
2
3
4
5
6
7
8
9
10
11
12
> asdf install python 3.13.0

python-build 3.13.0 /Users/kolorobot/.asdf/installs/python/3.13.0
python-build: use openssl@3 from homebrew
python-build: use readline from homebrew
Downloading Python-3.13.0.tar.xz...
-> https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tar.xz
Installing Python-3.13.0...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.13.0 to /Users/kolorobot/.asdf/installs/python/3.13.0

Ustaw wersję globalnie:

1
2
3
4
> asdf global python 3.13.0
> python --version

Python 3.13.0

Warto pamiętać, że środowiska programistyczne często mają różnych dostawców, na przykład Java ma wersje zarządzane przez OpenJDK czy GraalVM, a Python ma wersje zarządzane przez CPython czy Anaconda. asdf pozwala na instalację i zarządzanie wersjami środowisk od różnych dostawców, co jest kluczowe w pracy z różnorodnymi projektami i wymaganiami.

Automatyczne przełączanie wersji narzędzi w katalogach projektowych

Jednym z podstawowych zastosowań asdf jest automatyczne przełączanie wersji narzędzi w zależności od katalogu, w którym pracujesz. Plik .tool-versions, utworzony za pomocą polecenia asdf local, przechowuje informacje o wersjach narzędzi wymaganych w danym projekcie. Gdy zmienisz katalog na taki, który zawiera plik .tool-versions, asdf automatycznie ustawi odpowiednie wersje narzędzi. Na przykład, jeśli plik .tool-versions w katalogu projektu wygląda następująco:

1
2
3
java openjdk-21.0.1
nodejs 18.15.0
python 3.10.9

asdf automatycznie dostosuje środowisko, aby używać wersji wskazanych w tym pliku. Dzięki temu praca z różnymi projektami, które mają różne wymagania dotyczące środowisk programistycznych, staje się intuicyjna i płynna.

Mechanizm ten można wykorzystać również do synchronizacji wersji narzędzi w zespole. Plik .tool-versions można umieścić w repozytorium projektu, co eliminuje problemy z niezgodnością wersji narzędzi pomiędzy członkami zespołu. Dzięki temu każdy członek zespołu, po sklonowaniu repozytorium, może szybko skonfigurować swoje środowisko za pomocą polecenia asdf install. To znacznie przyspiesza onboarding nowych osób i redukuje błędy wynikające z różnic w konfiguracji środowisk.

Wspólne korzystanie z tego mechanizmu zapewnia spójność środowiska pracy i minimalizuje problemy z kompatybilnością wersji narzędzi w projekcie.

Podsumowanie

asdf to wszechstronne i elastyczne narzędzie, które upraszcza zarządzanie wersjami narzędzi i środowisk programistycznych. Dzięki zunifikowanemu interfejsowi i szerokiej gamie wtyczek, jest idealnym rozwiązaniem dla osób, które pracują z wieloma projektami o różnorodnych wymaganiach. Warto pamiętać, że asdf nie zastępuje menedżerów pakietów specyficznych dla poszczególnych ekosystemów, lecz działa jako ich uzupełnienie.

Pomimo wielu zalet, warto zaznaczyć, czym asdf nie jest. Choć asdf umożliwia zarządzanie wersjami środowisk i ich podstawowych konfiguracji, to nie daje możliwości zarządzania zależnościami w projektach. Nie obsługuje instalacji i zarządzania wersjami pakietów, nie zastąpi więc narzędzi takich jak npm dla Node.js czy pip dla Pythona. asdf działa jako uzupełnienie, a nie zastępstwo narzędzi specyficznych dla poszczególnych ekosystemów.

Przydatne linki

Rafał Borowiec

Nazywam się Rafał Borowiec. Jestem w branży IT od ponad 10 lat, przygodę rozpoczynałem jako tester oprogramowania. Oprócz testowania oprogramowania i zapewniania jakości, specjalizuję się w wytwarzaniu oprogramowania oraz zarządzaniu projektami i zespołami. Chętnie dzielę się wiedzą, prowadzę blog dotyczący programowania, jestem wykładowcą oraz trenerem IT.