Нормальная установка была бы sudo apt install nodejs
устанавливать Node.js и затем sudo apt install npm
устанавливать Диспетчер пакетов Узла. Однако после выполнения так, npm -v
говорит 3.5.2
. Для обновления обычно я сделал бы sudo npm install -g npm
, который обновляет к последней версии (который, во время писания этой статьи, 6.0.1
).
Когда я делаю a which npm
, Я добираюсь /usr/local/bin/npm
, однако apt
устанавливает символьную ссылку в /usr/bin/npm
. Если я sudo apt purge npm
для удаления npm это все еще оставляет npm версию npm в /usr/local/bin/npm
, однако npm -v
говорит -bash: /usr/bin/npm: No such file or directory
.
Во многих статьях говорится для использования PPA для установки nodejs, но я думаю, что должен быть собственный способ сделать это через apt
.
Инструкции DigitalOcean относительно установки обычно и через PPA: https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-18-04
Инструкции TecAdmin относительно установки через PPA: https://tecadmin.net/install-latest-nodejs-npm-on-ubuntu/
TLDR: Эта проблема вызывается Bash, кэширующим путь npm
команда, и может быть решена hash -d npm
. Вы не должны даже иметь дело с apt purge
если Вы не хотите.
Здесь были мои шаги для получения нового npm
версия на Ubuntu. Во-первых, сделайте установку, как OP описывает:
$ sudo apt-get install npm
(...apt installation of npm was successful...)
$ npm -v
3.5.2
$ command -v npm
/usr/bin/npm
$ sudo npm install -g npm
(...npm installation of npm was successful...so far, so good)
Вы видите, что новая версия уже хорошо работает в /usr/local/bin/npm
, но к сожалению кэш Bash все еще имеет /usr/bin/npm
:
$ /usr/local/bin/npm -v
6.4.1
$ npm -v
3.5.2
$ command -v npm
/usr/bin/npm
$ type npm
npm is hashed (/usr/bin/npm)
Для решения проблемы очиститесь, она от кэша Bash (сделайте это во всех открытых оболочках):
$ hash -d npm
Теперь новая версия работает, как желаемый:
$ npm -v
6.4.1
$ command -v npm
/usr/local/bin/npm
Путем я нашел, должен произвести чистку npm через sudo apt purge npm
, затем просто воссоздайте символьную ссылку на глобальную установку через ln -s /usr/local/bin/npm /usr/bin/npm
. После той фиксации, npm -v
возвраты 6.0.1
как ожидалось.
Чтобы иметь контроль на установленной npm версии, я всегда использую nvm
(управление версией узла). Можно установить его через инструкции здесь: https://github.com/creationix/nvm Затем следующей командой устанавливают последний npm на Вашем компьютере:
nvm install node