¿Cómo se actualiza npm a la última versión? [duplicar]

109

Tengo problemas con npm en un cuadro Vagrant que estoy configurando. Noté que la versión de npm es algo antigua, así que quería verificar el problema con la última versión.

Tengo entendido que deberías poder actualizar npm utilizando npm install -g npm , pero el comando no tiene efecto sobre el npm que se está utilizando:

[email protected]:~$ npm -v
1.3.10
[email protected]:~$ 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
[email protected]:~$ npm -v
1.3.10

También traté de usar n (como se sugiere en ¿Cómo puedo actualizar mi nodeJS a la última versión? ) para actualizar, pero no afecta ni a npm ni a node :

[email protected]:~$ node -v
v0.10.25
[email protected]:~$
[email protected]:~$ sudo npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
[email protected] /usr/lib/node_modules/n
[email protected]:~$ 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

[email protected]:~$ node -v
v0.10.25
[email protected]:~$ npm -v
1.3.10

¿Qué tengo que hacer para actualizar npm a la última versión?

    
pregunta Der Hochstapler 17.12.2014 - 10:39

10 respuestas

128

Todavía no entiendo por qué , pero tengo que ejecutar npm install -g npm dos veces para que tenga el efecto deseado:

[email protected]:~$ npm -v
1.3.10
[email protected]:~$ 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
[email protected]:~$ npm -v
1.3.10
[email protected]:~$ sudo npm install -g npm
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/lib/node_modules/npm
[email protected]:~$ npm -v
2.1.12
    
respondido por el Der Hochstapler 17.12.2014 - 11:31
35

Puede actualizar nodejs utilizando npm en sí, un PPA o manualmente.

npm :

Compruebe la versión actual que tiene:

node -v

Lo siguiente borra tu caché.

sudo npm cache clean -f

Instalar n

sudo npm install -g n

Puedes pedirle que instale una versión específica como esta:

sudo n 0.8.11

O simplemente dígale que instale la última versión estable. Ambos pueden tardar un tiempo.

sudo n stable

Para ver si realmente se actualizó, ejecuta:

node -v

PPA :

Otra opción es instalarlo a través de un PPA de chris-lea ;

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

Este PPA admite las siguientes distribuciones: Utópico (14.10), Confiable (14.04), Saucy (13.10), Raring (13.04), Quantal (12.10), Preciso (12.04), Oneiric (11.10), Natty (11.04), Lúcido (10.04).

Manualmente :

Siempre puede actualizarla manualmente descargando la última versión e instalándola usted mismo.

Referencia :

respondido por el blade19899 17.12.2014 - 11:38
32

Cuando hace npm install -g npm , el shell (Bash) buscará npm en su ruta, encontrará /usr/bin/npm instalado por el paquete del sistema y luego lo usará para instalar la nueva versión de npm . La nueva versión se instalará en /usr/local/bin/npm .

Ahora, tu ruta debería tener /usr/local/bin/ ANTES de /usr/bin/ , entonces pensarías que ahora recogería la versión actualizada en /usr/local/bin/ , ¿verdad? Mal.

Bash ejecutará las rutas ejecutables CACHE después de la primera vez que las busque, por lo que cuando diga npm la segunda vez, todavía está usando la versión almacenada en caché que primero encontró como /usr/bin/npm .

Para decirle a Bash que borre este caché y vuelva a mirar el camino, debe hacer un hash -r .

Después de instalar npm y hacer esto, mi shell recogió la nueva versión de npm muy bien.

Gracias

    
respondido por el Asfand Qazi 14.02.2015 - 12:54
15

Actualice NPM a la última versión en un comando

Para actualizar o actualizar la versión de su npm, simplemente escriba terminal:

sudo npm install [email protected] -g

Como se menciona en el pie de página de la documentación de NPM

    
respondido por el Jonatas Eduardo Salgado 02.04.2016 - 19:53
12

La mayoría de las veces no puedo actualizarlo con el comando global. Sin embargo, lo que funcionó para mí es actualizar el paquete desde la fuente de todos los módulos de nodo del sistema:

Descubre dónde está instalado npm y entra en esa carpeta

# 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 [email protected]

He aquí la poderosa fórmula para todos (especialmente la gente perezosa)

cd 'whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//''; cd ..; sudo npm install [email protected]
    
respondido por el Tom Siwik 05.03.2015 - 15:20
1

Cualquier truco que hagas, no uses Git , recomiendo ejecutarlos en Composer terminal . Seguramente funcionará. Lo hizo para mí por npm install npm -g .

    
respondido por el Gildas Niyigena 14.01.2016 - 19:58
1

Para actualizar npm necesitas actualizar nodejs a la última versión que incluye npm

En debian stretch y jessie usa este 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

En Ubuntu, puede usar este script desde enlace :

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

consulte primero la fuente en enlace

    
respondido por el rubo77 21.01.2017 - 21:33
0

actualizando a 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

Fuente de nodesource.com

    
respondido por el Rémi B. 13.07.2015 - 12:04
0

Estaba enfrentando el problema. Mi versión actual de npm era 3.3.12 pero probé sudo npm install npm -g , sudo npm update npm -g ... nada funcionó ... mientras que npm --version siempre recibí 3.3.12 . Busqué directorios en mi Ubuntu 15.04 y encontré dos versiones de npm en diferentes directorios.

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

Así que hice una copia de 3.3.12 con mv npm npm_3312 mientras estaba en el directorio npm anterior. Luego hice sudo cp -r npm /usr/local/lib/node_modules/ mientras estaba en el directorio '/ usr / lib / node_modules'. Hice mi npm --version y obtuve 3.6.0

: D

    
respondido por el Ariful Haque 29.01.2016 - 10:47
0

No veo ningún motivo para reinstalar algo que esté listo allí, solo use update -g integrado en el administrador de paquetes para actualizarse a sí mismo:

$ 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

Asegúrese de que la bandera global -g esté delante de los paquetes. He tenido problemas en el pasado con npm no registrando la bandera después de la lista de paquetes.

    
respondido por el SmujMaiku 28.10.2016 - 19:06

Lea otras preguntas en las etiquetas