Вопрос или проблема
Извините, я новичок в Linux.
Я пытаюсь обновить nodejs в свежей установке Ubuntu 22.04 на виртуальной машине.
Когда я выполняю это:
nodejs --version
Выводится:
v12.22.9
Я видел на многих ресурсах, что для обновления node до последней версии нужно выполнить эти команды:
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
Когда я это делаю, кажется, что работает и сообщает:
копирование: node/16.16.0
Однако, когда я снова выполняю nodejs --version
, он все равно показывает v12.22.9
Что я делаю не так?
Все, что я нашел в интернете, говорит мне делать вышеперечисленное.
Как обновить nodejs и увидеть последнюю версию?
Итак,
$ help type
type: type [-afptP] name [name ...]
Показывает информацию о типе команды.
Для каждого ИМЕНИ указывает, как оно будет интерпретировано, если использовать в качестве
названия команды.
Опции:
-a отображает все местоположения, содержащие исполняемый файл с именем NAME;
включает в себя псевдонимы, встроенные команды и функции, если и только если
опция `-p' не используется.
...
поэтому
$ type -a node
может вывести ДВА экземпляра node, с приоритетом у верхнего, если вы не укажете, какой именно запускать.
Имея две версии одного и того же, вы МОЖЕТЕ также столкнуться с конфликтами, при этом по умолчанию важные части (например, библиотеки) могут смешиваться, в зависимости от конкретной ситуации. Это может вызвать серьезные проблемы – или нет.
Замечание: чаще всего самым безопасным вариантом или “хорошим решением” является удаление любой предыдущей версии, затем установка новой/последней…
У меня была такая же проблема вначале, просто откройте новый терминал и выполните node –version, у меня обновилось после того, как показывало v12.22.9 для node, новый терминал показал 16.
Ответ или решение
Для решения проблемы с обновлением Node.js на Ubuntu 22.04, важно понимать, как работает система управления версиями Linux и как Node.js может быть установлен и управляться на платформе. В данном случае мы наблюдаем ситуацию, когда после обновления Node.js с использованием инструмента n
версия указывается как 16.16.0, но команда nodejs --version
продолжает показывать 12.22.9. Это может быть связано с несколькими причинами, которые стоит разобрать.
Теория:
На Linux (в частности на Ubuntu), возможно наличие нескольких установленных версий одной и той же программы. Это происходит из-за особенностей системы путей, где разные версии могут находиться в разных директориях.
Пример:
В системе может существовать несколько путей к бинарным файлам Node.js, которые определяют, какая версия будет выполняться по умолчанию. Ваша команда:
nodejs --version
может ссылаться на системный путь, где сохранена старая версия Node.js.
Попробуйте использовать команду:
type -a node
Эта команда покажет все пути, где находится бинарный файл Node. Та версия, что появляется первой, будет выполняться, когда вы вводите просто node
.
Практическое применение:
-
Проверка и удаление старых версий:
- Узнайте, где находятся все версии Node.js, с помощью команды типа
type -a node
. - Убедитесь, что вы установили правильную версию, используя правильные пути. Рекомендуется удалить старую версию полностью, чтобы избежать конфликта, используя:
sudo apt remove nodejs
- Узнайте, где находятся все версии Node.js, с помощью команды типа
-
Установка новой версии:
- Используйте
n
для установки новой версии Node.js. Убедитесь, что пакетn
установлен:sudo npm install -g n
- После установки новой версии через
n stable
, убедитесь, что вы открыли новый терминал, чтобы изменения путей компиляции были применены.
- Используйте
-
Проверка корректности установки:
- Убедитесь, что правильный путь к Node.js установлен в переменной окружения PATH. Для этого вы можете проверить своё окружение командой:
echo $PATH
- Если вы удалили старую версию, убедитесь, что новая версия Node.js является первой в списке в PATH.
- Убедитесь, что правильный путь к Node.js установлен в переменной окружения PATH. Для этого вы можете проверить своё окружение командой:
Выполнив вышеизложенные советы, вы сможете установить требуемую версию Node.js и быть уверенном, что система распознает именно её.