- Home »

Как установить 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. Пробуйте, автоматизируйте, делитесь опытом — и пусть ваши сервера всегда будут в порядке!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.