Home » Как установить ASDF для управления версиями языков программирования на Ubuntu 24.04
Как установить ASDF для управления версиями языков программирования на Ubuntu 24.04

Как установить ASDF для управления версиями языков программирования на Ubuntu 24.04

Сегодня разберёмся, как установить и настроить ASDF — универсальный менеджер версий языков программирования и инструментов — на свежей Ubuntu 24.04. Почему это важно? Потому что если вы когда-нибудь сталкивались с необходимостью держать на сервере несколько версий Python, Node.js, Ruby, Elixir, Go (и ещё десятка языков), то знаете, во что превращается система без нормального менеджера версий: хаос, конфликты, пляски с бубном и вечная головная боль при обновлениях. ASDF — это как швейцарский нож для девопса, только для языков и тулчейнов. В этой статье покажу, как быстро и без боли всё настроить, расскажу, как это работает, приведу примеры и дам пару лайфхаков для автоматизации. Погнали!

Что такое ASDF и зачем он нужен?

ASDF — это open-source менеджер версий для языков программирования и инструментов. Он позволяет устанавливать и переключать версии языков (Python, Node.js, Ruby, Erlang, Elixir, Rust, Java, PHP, Go, и ещё десятки других) на уровне пользователя или проекта. Всё это — через единый интерфейс и с минимальным вмешательством в системные библиотеки.

  • Нет конфликтов между проектами: каждый проект может использовать свою версию языка.
  • Легко обновлять и откатывать версии.
  • Работает через плагины — расширяемость практически бесконечная.
  • Идеально для серверов, где нужно быстро переключаться между версиями для разных приложений.

Как это работает?

ASDF использует концепцию плагинов для поддержки разных языков и инструментов. Каждый плагин знает, как скачать, собрать и установить нужную версию языка. Всё это хранится в домашней директории пользователя, не трогая системные пакеты. Переключение версий происходит через переменные окружения и shims (обёртки), которые подменяют вызовы бинарников.

В результате:

  • Вы можете держать на сервере хоть 10 версий Python и 5 версий Node.js — и не переживать, что что-то сломается.
  • ASDF не требует root-доступа (если не ставите глобально), что удобно для shared-хостинга или ограниченных серверов.
  • Всё работает через простые команды в терминале.

Быстрая установка ASDF на Ubuntu 24.04

Погнали по шагам. Всё максимально просто и без лишней воды.


# 1. Установим зависимости (git, curl, build-essential и т.д.)
sudo apt update
sudo apt install -y git curl build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncursesw5-dev \
xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# 2. Клонируем репозиторий ASDF в домашнюю директорию
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0

# 3. Добавим ASDF в .bashrc или .zshrc (для автозагрузки)
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc

# Для zsh:
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.zshrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.zshrc

# 4. Перезапускаем терминал или подгружаем конфиг
source ~/.bashrc
# или
source ~/.zshrc

# 5. Проверяем, что всё работает
asdf --version

Всё! ASDF установлен. Теперь можно ставить плагины и нужные языки.

Установка языков и инструментов через ASDF

Пример: хотим поставить Python, Node.js и Go.


# 1. Добавляем плагины
asdf plugin add python
asdf plugin add nodejs
asdf plugin add golang

# 2. Смотрим доступные версии
asdf list-all python
asdf list-all nodejs
asdf list-all golang

# 3. Ставим нужные версии
asdf install python 3.12.3
asdf install nodejs 20.12.2
asdf install golang 1.22.3

# 4. Делаем их глобальными (по умолчанию для всех терминалов)
asdf global python 3.12.3
asdf global nodejs 20.12.2
asdf global golang 1.22.3

# 5. Проверяем
python --version
node --version
go version

Для проекта можно создать файл .tool-versions (ASDF сам его создаёт при asdf local), и тогда в этой папке будут свои версии языков:


cd /path/to/project
asdf local python 3.11.8
asdf local nodejs 18.19.0

Теперь, заходя в эту папку, вы автоматически используете нужные версии. Удобно для деплоя, CI/CD и тестирования.

Плюсы и минусы ASDF: сравнение с другими решениями

Менеджер Языки Установка Гибкость Расширяемость Минусы
ASDF 50+ (через плагины) Средняя (нужны зависимости) Очень высокая Плагины на всё Иногда плагины неидеальны, не всегда свежие
pyenv Python Простая Только Python Плагины для Python Только Python, нет Node, Go и т.д.
nvm Node.js Очень простая Только Node.js Нет Ограничен одним языком
rbenv Ruby Простая Только Ruby Плагины для Ruby Ограничен одним языком

Как видно, ASDF — универсальный солдат. Если нужен только Python, можно взять pyenv, но если у вас микросервисы на разных языках, ASDF — мастхэв.

Практические кейсы: когда ASDF спасает

  • Положительный кейс: На сервере крутится несколько приложений: старый проект на Python 3.8, новый на 3.12, плюс фронтенд на Node.js 18 и 20. Системный Python не трогаем, всё через ASDF. Апдейты и деплой — без конфликтов, каждый проект использует свою версию.
  • Отрицательный кейс: Попытка собрать экзотическую версию языка через старый плагин ASDF, который не обновлялся год. В итоге — баги, не собирается. Решение: всегда проверяйте свежесть плагинов, иногда проще собрать руками или использовать специализированный менеджер (например, pyenv для Python).
  • Автоматизация: В CI/CD pipeline добавляете шаг asdf install — и на каждом этапе сборки подтягиваются нужные версии языков, никаких “works on my machine”.

Лайфхаки и нестандартные способы использования

  • ASDF для DevOps: Можно ставить не только языки, но и инструменты — например, kubectl, terraform, helm, awscli. Просто добавьте соответствующий плагин!
  • Автоматизация через .tool-versions: Храните этот файл в репозитории — и любой разработчик или CI-сервер всегда будет использовать нужные версии тулов.
  • Скрипты для массового обновления: Можно написать скрипт, который обновляет все плагины и версии языков на сервере одной командой:

    asdf plugin-update --all
    asdf install
  • Изоляция окружений: Используйте direnv в связке с ASDF для автоматической подгрузки нужных версий при заходе в папку проекта.

Статистика и интересные факты

  • ASDF поддерживает более 50 языков и инструментов через плагины.
  • Проект активно развивается с 2016 года, коммиты выходят почти каждую неделю.
  • В экосистеме ASDF есть плагины даже для таких экзотик как Crystal, Nim, Deno, Poetry, Yarn, Gradle, и даже для neovim!
  • ASDF используют в крупных компаниях для унификации окружения между разработчиками и CI/CD.

ASDF vs. другие решения: когда стоит выбирать?

  • ASDF: Если у вас несколько языков, микросервисы, или вы просто не хотите держать в голове 10 разных менеджеров версий — это ваш выбор.
  • pyenv/nvm/rbenv: Если нужен только один язык и хочется минимализма — можно взять специализированный инструмент.
  • Docker: Для полной изоляции окружения — контейнеры рулят, но для everyday-разработки и CI/CD ASDF быстрее и проще.

Новые возможности и автоматизация

С ASDF вы получаете:

  • Автоматическую установку нужных версий языков при клонировании репозитория (через asdf install).
  • Возможность быстро переключаться между версиями для тестирования и деплоя.
  • Управление не только языками, но и инструментами (kubectl, terraform, awscli и т.д.).
  • Интеграцию с CI/CD: просто добавьте asdf install в pipeline, и забудьте о проблемах с версиями.
  • Возможность писать свои плагины для кастомных тулов.

Выводы и рекомендации

ASDF — это универсальный менеджер версий, который реально экономит время и нервы, особенно если вы работаете с несколькими языками и инструментами на одном сервере. Он отлично подходит для серверов, CI/CD, разработки и даже для локальных машин. Установка на Ubuntu 24.04 занимает 5 минут, а выгода — на годы вперёд.

  • Используйте ASDF, если у вас микросервисная архитектура, несколько языков или вы просто не хотите держать в голове кучу разных тулов.
  • Храните .tool-versions в репозитории — это гарантирует одинаковое окружение у всех разработчиков и на всех серверах.
  • Не забывайте обновлять плагины и версии языков — это делается одной командой.
  • Для полной автоматизации интегрируйте ASDF в свои скрипты и CI/CD pipeline.

Если вы ищете надёжный VPS или выделенный сервер для своих проектов — рекомендую VPS или выделенные серверы на этом блоге. Всё протестировано, ASDF работает из коробки!

Официальная документация и список поддерживаемых плагинов — на asdf-vm.com. Пробуйте, автоматизируйте, делитесь опытом — и пусть ваши сервера всегда будут в порядке!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked