asdf — менеджер версий языков программирования

мая 07, 2021· #devtools

Для установки пакетов на macOS я долгое время пользовался пакетным менеджером Homebrew. Утилита позволяет устанавливать и обновлять не только актуальные, но и major-версии программ:

brew install postgresql@12

Однако, Homebrew не предоставляет функциональности для управления несколькими версиями пакетов, которые могут совместно существовать в пользовательском пространстве. Особенно, это критично, когда нет необходимости или желания использовать Docker, но есть потребность иметь разные версии языка программирования, например, для тестирования разрабатываемых библиотек или программного обеспечения.

Чтобы решить данную проблему разработчики стали придумывать утилиты вокруг командной оболочки для своих языков и рантаймов: nvm для Node.js, rvm и rbenv для Ruby и т. д. Если вы работаете с несколькими языками одновременно, то тащить для каждого из них свою утилиту, да еще и добавлять в shell ее скрипты, не всегда удобно. Чтобы этого не делать, можно воспользоваться менеджером версий asdf.

asdf имеет хорошую документацию, совместим со всеми популярными командными оболочками и расширяем при помощи системы плагинов.

Python и JDK устанавливаются следующим образом:

# Python
$ asdf plugin add python
$ asdf install python 3.9.4
$ asdf global python 3.9.4

# JDK
$ asdf plugin add java
$ asdf list-all java | grep "openjdk-11"
$ asdf install java openjdk-11
$ asdf global java openjdk-11
$ java --version

Через плагин для Java можно также конфигурировать переменную окружения $JAVA_HOME.