Come si aggiorna NPM alla versione più recente? [duplicare]

107

Sto riscontrando problemi con npm in una casella di Vagrant che sto configurando. Ho notato che la versione npm è un po 'vecchia, quindi volevo controllare il problema con l'ultima versione.

Sono a conoscenza del fatto che dovresti essere in grado di aggiornare npm utilizzando npm install -g npm , ma il comando non ha alcun effetto sul npm utilizzato:

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

Ho anche provato a usare n (come suggerito in Come posso aggiornare il mio nodoJS alla versione più recente? ) per l'aggiornamento, ma non influenza né npmnode :

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

Che cosa devo fare per aggiornare npm alla versione più recente?

    
posta Der Hochstapler 17.12.2014 - 10:39
fonte

10 risposte

127

Ancora non capisco perché , ma devo eseguire npm install -g npm due volte perché abbia l'effetto desiderato:

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
    
risposta data Der Hochstapler 17.12.2014 - 11:31
fonte
35

Puoi aggiornare nodejs usando npm stesso, un PPA o manualmente.

NPM :

Controlla la versione corrente che hai:

node -v

Quanto segue cancella la cache.

sudo npm cache clean -f

Installa n

sudo npm install -g n

Puoi dirgli di installare una versione specifica in questo modo:

sudo n 0.8.11

O dillo semplicemente per installare l'ultima versione stabile. Entrambi possono richiedere un po 'di tempo.

sudo n stable

Per vedere se è stato aggiornato, esegui:

node -v

PPA :

Un'altra opzione è installarla tramite un PPA da chris-lea ;

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

Questo PPA supporta le seguenti distro: Utopic (14.10), Trusty (14.04), Saucy (13.10), Raring (13.04), Quantal (12.10), Precise (12.04), Oneiric (11.10), Natty (11.04), Lucido (10.04).

manualmente :

Puoi sempre aggiornarlo manualmente scaricando l'ultima versione e installandola tu stesso!

Riferimento :

risposta data blade19899 17.12.2014 - 11:38
fonte
32

Quando esegui per primo npm install -g npm , la shell (Bash) cercherà npm nel tuo percorso, trova /usr/bin/npm installato dal pacchetto di sistema e quindi la usa per installare la nuova versione di npm . La nuova versione verrà installata in /usr/local/bin/npm .

Ora, il tuo percorso dovrebbe avere /usr/local/bin/ BEFORE /usr/bin/ , quindi potresti pensare che ora raccoglierà la versione aggiornata in /usr/local/bin/ , giusto? Sbagliato.

Bash eseguirà i percorsi eseguibili CACHE dopo la prima volta che li cercherà, quindi quando pronuncerai npm la seconda volta, continuerà a utilizzare la versione memorizzata nella cache che ha trovato per prima come /usr/bin/npm .

Per dire a Bash di cancellare questa cache e guardare di nuovo il percorso, devi fare un hash -r .

Dopo aver installato npm e fatto questo, la mia shell ha preso la nuova versione di npm bene.

Grazie

    
risposta data Asfand Qazi 14.02.2015 - 12:54
fonte
15

Aggiorna NPM all'ultima versione in un unico comando

Per aggiornare o aggiornare la versione di npm, basta digitare il terminale:

sudo npm install npm@latest -g

Come indicato nel piè di pagina della documentazione NPM

    
risposta data Jonatas Eduardo Salgado 02.04.2016 - 19:53
fonte
12

La maggior parte delle volte non riesco ad aggiornarlo con il comando globale. Tuttavia, ciò che ha funzionato per me è l'aggiornamento del pacchetto dall'origine di tutti i moduli del nodo dei sistemi:

Scopri dove npm è installato e vai in quella cartella

# 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

Guarda il potente liner per tutti (specialmente i pigri)

cd 'whereis npm | cut -c 6- | xargs readlink -f | sed 's/.\{18\}$//''; cd ..; sudo npm install npm@latest
    
risposta data Tom Siwik 05.03.2015 - 15:20
fonte
1

Qualsiasi trucco che fai, non usare Git , consiglio di eseguirli con Composer terminal . Funzionerà sicuramente. Lo ha fatto per me di npm install npm -g .

    
risposta data Gildas Niyigena 14.01.2016 - 19:58
fonte
1

Per aggiornare npm devi aggiornare nodejs alla versione più recente che include npm

In debian stretch e jessie usa questo 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

In Ubuntu, puoi utilizzare questo script dal link :

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

guarda la fonte prima al link

    
risposta data rubo77 21.01.2017 - 21:33
fonte
0

aggiornamento 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

Fonte da nodesource.com

    
risposta data Rémi B. 13.07.2015 - 12:04
fonte
0

Stavo affrontando il problema. La mia versione corrente di npm era 3.3.12 ma ho provato sudo npm install npm -g , sudo npm update npm -g .. non ha funzionato .. mentre I npm --version ottengo sempre 3.3.12 . Ho cercato le directory nella mia Ubuntu 15.04 e ho trovato due versioni di npm in una directory diversa.

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

Così ho fatto una copia di 3.3.12 con mv npm npm_3312 mentre ero nella vecchia directory npm. Poi ho fatto sudo cp -r npm /usr/local/lib/node_modules/ mentre ero nella directory '/ usr / lib / node_modules'. Ho reso il mio npm --version e ho ottenuto 3.6.0

: D

    
risposta data Ariful Haque 29.01.2016 - 10:47
fonte
0

Non vedo alcun motivo per reinstallare qualcosa che è pronto lì, basta usare update -g integrato nel gestore pacchetti per aggiornarsi:

$ 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

Assicurati che la bandiera globale -g sia prima dei pacchetti. Ho avuto problemi in passato con npm che non registrava il flag dopo l'elenco dei pacchetti.

    
risposta data SmujMaiku 28.10.2016 - 19:06
fonte

Leggi altre domande sui tag