J'ai des problèmes avec npm
dans une boîte Vagrant que je configure. J'ai remarqué que la version npm
est quelque peu ancienne et je voulais donc vérifier le problème avec la dernière version.
D'après ce que j'ai compris, vous devriez pouvoir mettre à jour npm
à l'aide de npm install -g npm
, mais 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
[email protected] /usr/local/lib/node_modules/npm
vagrant@box:~$ npm -v
1.3.10
J'ai aussi essayé d'utiliser n
(comme suggéré dans Comment puis-je mettre à jour mon nodeJS vers la dernière version? ) pour le 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
[email protected] /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 avec la dernière version?
Je ne comprends toujours pas pourquoi , mais je dois exécuter npm install -g npm
deux fois pour avoir 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
[email protected] /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
[email protected] /usr/lib/node_modules/npm
vagrant@box:~$ npm -v
2.1.12
Lors de la première utilisation de npm install -g npm
, 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
name__. La nouvelle version sera installée dans /usr/local/bin/npm
.
Maintenant, votre chemin devrait avoir /usr/local/bin/
BEFORE /usr/bin/
, de sorte que vous pensiez qu'il prendrait maintenant la version mise à jour dans /usr/local/bin/
, n'est-ce pas? Faux.
Bash utilisera les chemins CACHE exécutables après la première recherche, donc lorsque vous dites npm
la deuxième fois, il utilise toujours la version en cache qu'il a trouvée pour la première fois sous le nom /usr/bin/npm
.
Pour demander à Bash d'effacer ce cache et de parcourir à nouveau le chemin, vous devez créer un hash -r
.
Après avoir installé npm
name__, mon shell a tout à fait bien compris la nouvelle version de npm
name__.
Merci
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
Installez n
Sudo npm install -g n
Vous pouvez lui dire d'installer une version spécifique comme ceci:
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 s'est réellement 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 prend en charge 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), Lucid (10.04). ).
manuellement :
Vous pouvez toujours le mettre à jour manuellement en téléchargeant la dernière version et en l'installant vous-même!
Référence :
Pour mettre à niveau ou mettre à jour la version de votre npm, tapez simplement dans le terminal:
Sudo npm install npm@latest -g
Comme mentionné dans le pied de page du documentation du NPM
La plupart du temps, je suis incapable de le mettre à niveau avec la commande globale. Ce qui a fonctionné pour moi, cependant, est la mise à niveau du paquet à partir de la source de tous les modules de nœuds de systèmes:
Découvrez où npm est installé et allez dans 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
Voyez le puissant one-line pour tout le monde (surtout les paresseux)
cd `whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//'`; cd ..; Sudo npm install npm@latest
Pour mettre à niveau npm
vous devez mettre à jour nodejs
avec la dernière version qui inclut npm
name__
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 à partir de https://deb.nodesource.com :
curl -sL https://deb.nodesource.com/setup_7.x | Sudo -E bash -
Sudo apt-get install -y nodejs
voyez d'abord la source sur https://github.com/nodesource/distributions/blob/master/deb/setup_7.x
N'importe quel truc que vous fassiez, n'utilisez pas Git
, je vous recommande de les exécuter dans le Composer terminal
. Cela fonctionnera sûrement. C'est ce que j'ai fait pour npm install npm -g
.
Je faisais face 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 ne fonctionnait .. alors que je npm --version
je reçois toujours 3.3.12
. J'ai cherché des répertoires dans mon Ubuntu 15.04 et trouvé deux versions de npm dans des répertoires différents.
/usr/local/lib/node_modules/npm
/usr/lib/node_modules/npm
J'ai donc fait une copie de 3.3.12 avec mv npm npm_3312
alors que j'étais dans l'ancien répertoire npm. Puis 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 créé mon npm --version
et j'ai eu 3.6.0
:RÉ
Je ne vois aucune raison de réinstaller quelque chose de prêt ici, utilisez simplement pdate -g intégré dans le gestionnaire de paquets pour se mettre à jour lui-même:
$ npm -v
2.15.1
$ Sudo npm update -g npm
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/local/lib/node_modules/npm
$ npm -v
3.10.9
Assurez-vous que l'indicateur global - g est avant les packages. Dans le passé, j'ai eu du mal à ne pas enregistrer le drapeau après la liste de paquets.
# 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