Comment mettre à jour npm vers la dernière version? [dupliquer]

107

J'ai des problèmes avec npm dans une boîte Vagrant que je mets en place. J'ai remarqué que la version npm est un peu ancienne, je voulais donc vérifier le problème avec la dernière version.

Je crois savoir que vous devriez pouvoir mettre à jour npm en utilisant npm install -g npm , mais que la commande n'a aucun effet sur le npm utilisé:

vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10

J'ai également essayé d'utiliser n (comme suggéré dans Comment puis-je mettre à jour mon nodeJS vers la dernière version? ) pour mettre à jour, mais cela n'affecte ni npm ni node :

vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$
vagrant@box:~$ sudo npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
n@1.2.9 /usr/lib/node_modules/n
vagrant@box:~$ sudo n stable

     install : v0.10.33
       mkdir : /usr/local/n/versions/0.10.33
       fetch : http://nodejs.org/dist/v0.10.33/node-v0.10.33-linux-x64.tar.gz
   installed : v0.10.33

vagrant@box:~$ node -v
v0.10.25
vagrant@box:~$ npm -v
1.3.10

Que dois-je faire pour mettre à jour npm vers la dernière version?

    
posée Der Hochstapler 17.12.2014 - 10:39
la source

10 réponses

127

Je ne comprends toujours pas pourquoi , mais je dois exécuter npm install -g npm deux fois pour qu’il ait l’effet souhaité:

vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
npm http GET https://registry.npmjs.org/npm
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-2.1.12.tgz
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
vagrant@box:~$ sudo npm install -g npm
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
npm@2.1.12 /usr/lib/node_modules/npm
vagrant@box:~$ npm -v
2.1.12
    
réponse donnée Der Hochstapler 17.12.2014 - 11:31
la source
34

Vous pouvez mettre à jour nodejs en utilisant npm lui-même, un PPA ou manuellement.

npm :

Vérifiez la version actuelle que vous avez:

node -v

Ce qui suit efface votre cache.

sudo npm cache clean -f

Installer n

sudo npm install -g n

Vous pouvez lui demander d'installer une version spécifique comme celle-ci:

sudo n 0.8.11

Ou simplement lui dire d'installer la dernière version stable. Les deux peuvent prendre un certain temps.

sudo n stable

Pour voir si elle a effectivement été mise à niveau, exécutez:

node -v

PPA :

Une autre option consiste à l’installer via un PPA par chris-lea ;

sudo add-apt-repository ppa:chris-lea/node.js  
sudo apt-get update  
sudo apt-get install nodejs

Ce PPA supporte les distributions suivantes: Utopic (14.10), Trusty (14.04), Saucy (13.10), Raring (13.04), Quantal (12.10), Precise (12.04), Oneiric (11.10), Natty (11.04), Lucide (10.04).

Manuellement :

Vous pouvez toujours le mettre à jour en téléchargeant la dernière version et en l’installant vous-même!

Référence :

réponse donnée blade19899 17.12.2014 - 11:38
la source
30

Lorsque vous exécutez npm install -g npm pour la première fois, le shell (Bash) recherchera npm dans votre chemin, trouvera /usr/bin/npm installé par le package système, puis l'utilisera pour installer la nouvelle version de npm . La nouvelle version sera installée dans /usr/local/bin/npm .

Maintenant, votre chemin devrait avoir /usr/local/bin/ AVANT /usr/bin/ , vous penseriez donc qu'il prendrait la version mise à jour dans /usr/local/bin/ , non? Faux.

Bash exécutera les chemins exécutables après la première recherche, par conséquent, lorsque vous dites npm la deuxième fois, il utilise toujours la version mise en cache qu'il a trouvée sous la forme /usr/bin/npm .

Pour que Bash efface ce cache et examine à nouveau le chemin, vous devez faire hash -r .

Après avoir installé npm et ce faisant, mon shell a récupéré la nouvelle version de npm .

Merci

    
réponse donnée Asfand Qazi 14.02.2015 - 12:54
la source
15

Mettre à jour NPM vers la dernière version en une seule commande

Pour mettre à jour ou mettre à jour la version de votre npm, tapez simplement le terminal:

sudo npm install npm@latest -g

Comme indiqué dans le pied de page de la documentation NPM

    
réponse donnée Jonatas Eduardo Salgado 02.04.2016 - 19:53
la source
12

La plupart du temps, je ne peux pas le mettre à niveau avec la commande globale. Ce qui a fonctionné pour moi, cependant, est de mettre à jour le paquet depuis la source de tous les modules de nœuds du système:

Découvrez où npm est installé et accédez à ce dossier

# Below command shows the destination (remove sed pipe to see the full path of npm-cli)
whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{19\}$//'

# Go in there and install it manually. In my case it was the folder below... 
# NOTE: on mac its in /usr/local/lib
cd /usr/lib
sudo npm install npm@latest

Voici le puissant one-liner pour tout le monde (surtout les fainéants)

cd 'whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//''; cd ..; sudo npm install npm@latest
    
réponse donnée Tom Siwik 05.03.2015 - 15:20
la source
1

N'importe quelle astuce que vous faites, n'utilisez pas Git , je vous recommande de les exécuter dans le Composer terminal . Ça va sûrement marcher. Il a fait pour moi par npm install npm -g .

    
réponse donnée Gildas Niyigena 14.01.2016 - 19:58
la source
1

Pour mettre à niveau npm , vous devez mettre à jour nodejs vers la dernière version qui inclut npm

Dans debian stretch et jessie, utilisez ce script:

#install prerequisites
apt-get install apt-transport-https curl git lsb-release -y

#Install NodeJS from external repositories
DISTRO=$(lsb_release -c -s)
if [ "$DISTRO" == "stretch" ]
then
  DISTRO="jessie"
fi

if curl -f "https://deb.nodesource.com/node_7.x/dists/$DISTRO/Release" >/dev/null
then
  curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
  echo "deb https://deb.nodesource.com/node_7.x $DISTRO main" > /etc/apt/sources.list.d/nodesource.list
  echo "deb-src https://deb.nodesource.com/node_7.x $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list
  apt-get update
  # comment out the following line, if you installed nodejs 7 already (check with 'apt-cache policy nodejs')
  apt-get remove nodejs nodejs-legacy npm
  apt-get install nodejs -y
else
  echo -e "Your distribution is not supported by NodeJS. \nYou have to install a recent NodeJS version (>=4) manually. "
fi

Dans Ubuntu, vous pouvez utiliser ce script depuis lien :

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

consultez d'abord la source à l'adresse lien

    
réponse donnée rubo77 21.01.2017 - 21:33
la source
0

mise à niveau vers nodejs v0.12.7

 # Note the new setup script name for Node.js v0.12
 curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

 # Then install with:
 sudo apt-get install -y nodejs

Source de nodesource.com

    
réponse donnée Rémi B. 13.07.2015 - 12:04
la source
0

J'étais confronté au problème. Ma version actuelle de npm était 3.3.12 mais j'ai essayé sudo npm install npm -g , sudo npm update npm -g .. rien n'a fonctionné .. alors que npm --version j'obtiens toujours 3.3.12 . J'ai recherché des répertoires dans mon Ubuntu 15.04 et j'ai trouvé deux versions de npm dans des répertoires différents.

  • v3.3.12 dans /usr/local/lib/node_modules/npm
  • v3.6 dans /usr/lib/node_modules/npm

J'ai donc fait une copie du 3.3.12 avec mv npm npm_3312 alors que j'étais dans un ancien répertoire npm. Alors j'ai fait sudo cp -r npm /usr/local/lib/node_modules/ alors que j'étais dans le répertoire '/ usr / lib / node_modules'. J'ai fait mon npm --version et j'ai obtenu 3.6.0

: D

    
réponse donnée Ariful Haque 29.01.2016 - 10:47
la source
0

Je ne vois aucune raison de réinstaller quelque chose qui est prêt là-bas, utilisez simplement update -g intégré dans le gestionnaire de paquets pour se mettre à jour:

$ npm -v
2.15.1
$ sudo npm update -g npm
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@3.10.9 /usr/local/lib/node_modules/npm
$ npm -v
3.10.9

Assurez-vous que l'indicateur global -g est avant les packages. J'ai eu des problèmes dans le passé avec npm ne pas enregistrer le drapeau après la liste des paquets.

    
réponse donnée SmujMaiku 28.10.2016 - 19:06
la source

Lire d'autres questions sur les étiquettes