web-dev-qa-db-fra.com

NPM est une version incorrecte lors de la dernière installation de Ubuntu (18.04)

L'installation normale serait Sudo apt install nodejs pour installer Node.js, puis Sudo apt install npm pour installer Node Gestionnaire de packages. Cependant, npm -v dit 3.5.2. Pour effectuer une mise à niveau normale, je ferais Sudo npm install -g npm, qui met à jour la dernière version (qui, au moment de la rédaction de cet article, est 6.0.1).

Quand je fais un which npm, j'obtiens /usr/local/bin/npm, cependant aptinstalle un lien symbolique à /usr/bin/npm. Si je Sudo apt purge npm pour supprimer npm, la version de npm de npm reste toujours à /usr/local/bin/npm, cependant npm -v indique -bash: /usr/bin/npm: No such file or directory.

Beaucoup d'articles disent d'utiliser un PPA pour installer nodejs, mais je pense qu'il devrait exister un moyen natif de le faire via aptname__.

Instructions DigitalOcean sur l'installation normalement et par PPA: https://www.digitalocean.com/community/tutorials/how-to-install -node-js-on-ubuntu-18-04

Instructions TecAdmin pour l'installation via PPA: https://tecadmin.net/install-latest-nodejs-npm-on-ubuntu/

6
Blairg23

TLDR: Ce problème est dû à Bash met en cache le chemin de la commande npm et peut être résolu par hash -d npm. Vous n'avez même pas besoin de traiter avec apt purge sauf si vous le souhaitez.

Explication

Voici mes étapes pour obtenir une nouvelle version de npm sur Ubuntu. Commencez par installer comme décrit par 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)

Vous pouvez voir que la nouvelle version fonctionne déjà bien dans /usr/local/bin/npm, mais malheureusement, le cache Bash a toujours /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)

Pour résoudre le problème, effacez-le du cache Bash (procédez comme suit dans tous les shells ouverts):

$ hash -d npm

Maintenant, la nouvelle version fonctionne comme vous le souhaitez:

$ npm -v
6.4.1
$ command -v npm
/usr/local/bin/npm
5
krubo

La méthode que j'ai trouvée consiste à purger npm via Sudo apt purge npm, puis à simplement recréer un lien symbolique vers l'installation globale via ln -s /usr/local/bin/npm /usr/bin/npm. Après cette correction, npm -v renvoie 6.0.1 comme prévu.

10
Blairg23

Pour avoir le contrôle sur la version npm installée, j'utilise toujours nvm (contrôle de version de noeud). Vous pouvez l'installer en suivant les instructions suivantes: https://github.com/creationix/nvm Ensuite, en installant la commande suivante, installez le dernier npm sur votre ordinateur:

nvm install node

1
Farzad