NPM является неверной версией на последней установке Ubuntu (18.04)

Нормальная установка была бы 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/

14
задан 14 May 2018 в 14:14

3 ответа

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
25
ответ дан 23 November 2019 в 02:53

Путем я нашел, должен произвести чистку npm через sudo apt purge npm, затем просто воссоздайте символьную ссылку на глобальную установку через ln -s /usr/local/bin/npm /usr/bin/npm. После той фиксации, npm -v возвраты 6.0.1 как ожидалось.

11
ответ дан 23 November 2019 в 02:53

Чтобы иметь контроль на установленной npm версии, я всегда использую nvm (управление версией узла). Можно установить его через инструкции здесь: https://github.com/creationix/nvm Затем следующей командой устанавливают последний npm на Вашем компьютере:

nvm install node

2
ответ дан 23 November 2019 в 02:53

Другие вопросы по тегам:

Похожие вопросы: