Управление версиями Node.js на Ubuntu 20.04 с помощью n

Кому пригодится этот материал
Разработчикам, которым часто приходится переключаться между проектами с разными требованиями к версии Node.js; системным администраторам и DevOps-инженерам, обеспечивающим окружения для команд разработки; тимлидам, планирующим миграцию приложений на новые версии Node.js.
Краткое определение
n — минималистичный менеджер версий Node.js. Позволяет загружать, устанавливать и переключаться между версиями Node.js через простые команды в терминале.
Требования
- Сервер или рабочая станция под управлением Ubuntu 20.04.
- Пользователь с правами для установки программ (root или sudo).
Обновите систему и установите зависимости
Перед началом рекомендуется обновить пакеты и установить необходимые утилиты:
apt-get update -yapt-get install curl git make -yВажно: команды выше требуют прав root или sudo.
Установка n через npm
Проще всего установить n глобально через npm:
npm install -g nЕсли npm отсутствует, можно скачать и запустить инсталлятор напрямую:
curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n
bash n ltsЭтот скрипт установит Node.js, npm и n. По умолчанию n устанавливается в каталог пользователя, а не в системный PATH — поэтому его нужно добавить в PATH.
Отредактируйте ~/.bashrc:
nano ~/.bashrcДобавьте строки:
export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATHСохраните файл и активируйте изменения:
source ~/.bashrcАльтернативный установщик — n-install:
curl -L https://git.io/n-install | bashПосле него также выполните:
source ~/.bashrcЧтобы удалить n, используйте:
n-uninstallДля обновления n до последней версии выполните:
n-updateПроверка версии n:
n --versionПример ожидаемого вывода:
7.3.0Справка по опциям:
n --help(Взятый из справки вывод оставлен в неизменном виде.)
Основные команды управления версиями Node.js
Установка последней версии Node.js:
n latestПример вывода установки:
installing : node-v16.4.0
mkdir : /root/n/n/versions/node/16.4.0
fetch : https://nodejs.org/dist/v16.4.0/node-v16.4.0-linux-x64.tar.xz
installed : v16.4.0 (with npm 7.18.1)Проверка установленной версии Node.js:
node --versionУстановка последней LTS-версии:
n ltsУстановка конкретной версии:
n 14.15.0Загрузка (без установки) конкретной версии:
n -d 14.8.0Запуск загруженной версии без системной установки:
n run 14.8.0Выход из интерактивного Node.js REPL:
> .exitПросмотр установленных версий:
n lsПросмотр доступных версий удалённого репозитория (по умолчанию 20):
n ls-remoteЧтобы отобразить все доступные версии:
n ls-remote --allНахождение пути к установленной версии:
n which node/14.8.0Интерактивное переключение между версиями (поднимите стрелками и нажмите Enter):
nУдаление конкретной версии:
n rm node/16.4.0Удалить все загруженные версии, кроме текущей:
n pruneПолное удаление Node.js и npm, установленных через n:
n uninstallПример вывода при удалении:
Do you wish to delete node and npm from /root/n? Y
Uninstalling node and npm
/root/n/bin/node
/root/n/bin/npm
/root/n/bin/npx
/root/n/include/node
/root/n/lib/node_modules/npm
/root/n/share/doc/node
/root/n/share/man/man1/node.1
/root/n/share/systemtap/tapset/node.stpПрактические рекомендации и распространённые ошибки
- Работа от root vs обычный пользователь: n удобно ставить в домашний каталог пользователя (N_PREFIX=$HOME/.n). Установка под root пишет в /root/n и усложняет совместное использование у нескольких пользователей.
- Разрешения и PATH: если n доступен, но node не меняется — убедитесь, что PATH настроен правильно и расположение n/bin идёт раньше системного /usr/bin.
- Сохранение глобальных npm-пакетов: используйте опцию -p (–preserve) при установке, чтобы сохранить npm и npx.
- За прокси и сертификаты: если вы за корпоративным прокси с самоподписанными сертификатами, опция –insecure может помочь, но уменьшит безопасность.
- Архитектура и сжатие: если возникают ошибки с распаковкой, проверьте параметры –arch и –use-xz/–no-use-xz.
Важно: не меняйте версии Node.js в среде продакшн без тестирования и отката-плана.
Когда n не подходит — альтернативы
- nvm — более гибкий, подходит для пользовательских окружений и сценариев, где важна совместимость с POSIX-профилями; требует загрузки скрипта в shell.
- asdf — плагинный менеджер, управляет не только Node.js, но и Python, Ruby, и т.д., полезен в гетерогенных средах.
- Docker — альтернатива для изолированных окружений: вы явно указываете образ с нужной версией Node.js.
Выбор зависит от сценария: для простых переключений n быстрее и проще; для сложных CI/CD-пайплайнов удобнее Docker или asdf.
Чек-листы по ролям
Чек-лист для разработчика:
- Убедиться, что локально PATH указывает на N_PREFIX/bin.
- Установить нужную версию через n и прогнать unit/integration тесты.
- Зафиксировать минимально необходимую версию Node.js в package.json или README.
Чек-лист для DevOps/администратора:
- Проверить совместимость глобальных пакетов npm после смены версии.
- Подготовить тестовую среду и сценарий отката (rollback).
- Автоматизировать установку n в конфигурации образа/Ansible/Cloud-init.
Чек-лист для тимлида:
- Согласовать политику обновления версий (когда переходим на LTS/Latest).
- Определить ответственных за обновления и тестирование.
Плейбук: обновление версии Node.js в проекте
- На ветке feature/upgrade создайте окружение с нужной версией:
n lts- Обновите зависимости и запустите тесты:
npm install
npm test- Протестируйте производительность и интеграцию.
- Если всё ок — создайте PR и запланируйте деплой в тестовую среду.
- Если найден регресс — откатите версию:
n <старый-номер>Критерии приёмки:
- Unit и integration тесты проходят на новой версии.
- CI-пайплайн завершает все стадии успешно.
- Нет критических ошибок в логах в течение выбранного окна наблюдения.
Тест-кейсы и проверки после смены версии
- Проверка запуска приложения и основных API-эндпоинтов.
- Проверка сборки фронтенда (если используется сборка в Node).
- Проверка глобальных bin-утилит (npm, npx, yarn).
- Smoke-тест производительности (ключевые сценарии).
Безопасность и совместимость
- Не используйте –insecure в публичных серверах. Если прокси мешает, настройте доверенные сертификаты.
- Проверяйте совместимость npm-пакетов с новой версией Node.js (иногда нужны rebuilds native-аддонов: npm rebuild или npm rebuild –update-binary).
Частые вопросы и решения
Q: Node не меняется после n 14.15.0 A: Проверьте, какой node исполняется: which node и echo $PATH. Возможно, устаревший /usr/bin/node стоит раньше N_PREFIX/bin.
Q: Как сохранить глобальные npm-пакеты при смене версии? A: Используйте -p при установке Node через n, или переустановите глобальные пакеты в новой версии.
Q: Можно ли использовать n в CI? A: Да, но в CI обычно удобнее использовать контейнеры с заранее зафиксированными версиями Node.js.
Резюме
n — простой и быстрый инструмент для управления версиями Node.js на Ubuntu 20.04. Он хорош для локальной разработки и лёгких серверных окружений. Для более сложных сценариев стоит рассмотреть nvm, asdf или Docker. Всегда тестируйте изменения, имейте план отката и следите за разрешениями и PATH.
Важно: перед массовой сменой версий согласуйте шаги с командой и проверьте совместимость зависимостей.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента