sudo: npm: comando non trovato


202

Sto cercando di aggiornare all'ultima versione del nodo. Sto seguendo le istruzioni su http://davidwalsh.name/upgrade-nodejs

Ma quando lo faccio:

sudo npm install -g n

Ottengo l'errore:

sudo: npm: command not found

npm funziona senza sudo. Quando io faccio:

whereis node

Vedo:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

In esecuzione:

which npm

Spettacoli:

/usr/local/node/bin/npm

Ho provato la soluzione su https://stackoverflow.com/a/5062718/1246159

Ma sto ancora ricevendo lo stesso errore. Ho anche guardato il file / etc / sudoers e la riga pertinente è:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Questo mi sembra perfetto. Come posso far funzionare NPM con il comando sudo?


4
funziona? sudo /usr/bin/npm install -g n
robertklep,

2
Puoi provare a reinstallare il nodo? Sembra che tu abbia eliminato npm.
Jeff Sloyer,

1
Potresti aver aggiunto il /usr/local/node/bintuo $PATH, ma npmdovrebbe essere installato in /usr/local/bin. La prima directory non è in secure_pathcui spiega perché sudonon riesco a trovarla.
robertklep,

1
Usando nvmsu Ubuntu qui - con il commento di @robertklep, ho provato sudo /home/${user}/.nvm/version/node/${version}/bin/npm installe ha funzionato.
Stav Pan Geffen,

2
Ha risolto il mio problema reinstallando dal seguente pacchetto. nodejs.org/en/download
Marghoob Suleman

Risposte:


125

Il file npm dovrebbe essere in /usr/local/bin/npm. Se non è presente, installare nuovamente node.js con il pacchetto sul loro sito Web . Questo ha funzionato nel mio caso.


grazie. Se si installa il nodo in altre unità dati, dove os non è installato, non è possibile trovare questo percorso.
Hardik Darji,

1
nel caso di mac os con homebrew .. due passaggi da fare è (1) quale nodo (2) quale npm che dovrebbe essere sia in / usr / local / bin (dove homebrew installa / symlink nodo + npm) ... per risolvere .. prova (1) brew doctor (2) brew reinstalla nodo se continua a dare problemi .. controlla il tuo percorso (echo $ PATH). devi avere più bin bin che puntano a varie installazioni di nodi ... se è così ... cleanup (come nel renderlo più ordinato) il tuo ~ / .bashrc / ~ / .bash_profile, quindi / usr / local / bin è lì caricato senza altro che punta a un'installazione di nodo casuale.
Jimmy MG Lim

3
Questa è una soluzione parziale. Il problema si verifica quando si installa manualmente il nodo. È necessario eseguire il softlink di ogni file binario installato in / usr / bin o / usr / local / bin. L'impostazione del percorso in root bascc non funzionerà in quanto non viene letto durante sudo quindi questo è l'unico modo in cui sembra a meno che non si installi il pacchetto.
Shrimpwagon,

come ha detto @shrimpwagon, la parte inferiore delle istruzioni manuali ti dice di collegare "sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx "
James Nelson,

170

Ho dovuto fare

sudo apt-get install npm

ha funzionato per me.


6
È difficile capire cosa vuoi esprimere.
piccola luce solare

4
Questo è scaduto. Ciò che ha funzionato per me sono stati questi comandi che ho trovato qui: github.com/nodesource/distributions#debinstall # Uso di Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Uso di Debian, come root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
Hamed

4
@tinysunlight Non sono sicuro di ciò che non è chiaro. L'op dice che manca il comando npm. Questo comando installa il comando npm.
Velocibadgery

7
Questa non è la risposta corretta alla domanda perché è evidente dall'op che npmè già installato ma non raggiungibile quando invocato tramite sudo. Con questa soluzione si reinstalla npm che è già esistente. Questo è combattere i sintomi piuttosto che trovare la causa. Capisco che questo potrebbe correggere le cose rotte per alcune persone, ma è fuorviante, stare così.
Dominic

4
Quando ho installato il nodo usando NVM su Ubuntu 18.10, sudo non riconosce npm come comando. sudo apt-get install npmha funzionato per me.
AlienKevin,

91

Per gli utenti MAC, i seguenti passaggi hanno funzionato per me.

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

5
Il brew uninstall nodenon ha funzionato per me, ma ho continuato con brew install nodee brew postinstalle risolto il problema. Grazie
Trevor

2
Che cosa brew postinstallfa esattamente?
Oliver D,

nella versione Homebrew 2.2.14 brew postinstallè ridondante
Arslan Khan il

63

Ho avuto lo stesso problema; ecco i comandi per risolverlo:

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

2
Ha funzionato per me su CentOS 7
hirikarate il

4
Ha funzionato per me Ubuntu 16.04.1 LTS. Uso NVM quindi il primo percorso è stato quello in cui NVM ha installato il nodo e npm (il percorso include una versione %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Peccato che dovrò fare riferimento a questa risposta ogni volta che aggiorno usando NVM a causa di come cambierà la versione nel percorso
kas

1
Questo ha risolto anche per me! Originariamente pubblicato su Stack Overflow: Su EC2: il comando sudo node non è stato trovato, ma il nodo senza sudo è ok
Dominic

2
@kas sudo ln -s $(whereis node) /usr/bin/node E così via. nel tuo profilo bash.
Aravind Voggu,

Ha funzionato per me nell'istanza di AWS ec2.
Chirag Purohit,

26

ATTENZIONE (modifica)

Fare una chmod 777è una soluzione abbastanza radicale. Prova questi prima, uno alla volta, e fermati quando uno funziona:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node è l'unica parte di installazione in cui vorrei ottenere un problema

Permission denied - /usr/local/lib/node_modules/npm/.github

Così io

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

e viola, npm è ora collegato

$ npm -v
3.10.10

Extra

Se avessi usato -R 777su lib la mia raccomandazione sarebbe quella di impostare file e directory nidificati su un'impostazione predefinita:

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755

3
@Jacksonkr ..... hai appena consigliato chmoding 777 l'intera cartella locale / lib?
sfratini

Quale chmoddovrebbe essere questa directory?
tim_xyz,

1
@tim_xyz drwxr-xr-xsono i valori predefiniti per lib. Detto questo, NON utilizzare la funzione ricorsiva -Rquando si ripristina la cartella.
Jacksonkr,

Grazie! sudo chmod -R 777 / usr / local / lib / node_modules ha funzionato per me
Hisagr,


8

Per gli utenti CentOS, questo funziona per me:

sudo yum install npm

1
il problema con questo approccio è che in Fedora, ad esempio, è molto obsoleto nei repository dnf / yum
ACV,

2
Su CentOS 7 devi prima abilitare il repository EPEL:yum install epel-release; yum install npm
hudolejev

8

Per installare i pacchetti npm a livello globale con l'autorizzazione sudo, /usr/bin/npmdovrebbe essere disponibile. Se npmesiste in un'altra directory, crea un collegamento software come:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

Funziona su Fedora 25, node8.0.0 e npm5.0.0


6

Su macOS, questo ha funzionato per me:

brew reinstall node

1
Spiacenti unix, ho appena notato che la domanda è taggata , ma potrebbe essere ancora utile poiché è il risultato di ricerca di Google in alto per "comando macos npm non trovato"
friederbluemle

5

Per debian dopo l'installazione del nodo, immettere

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh

5

Se hai installato node / npm con nvm, il file di configurazione dell'ambiente nvm deve essere eseguito prima di poter utilizzare entrambi i pacchetti.

Questo si trova generalmente in ~ / .nvm / nvm.sh.

Per eseguirlo automaticamente, includere:

source ~/.nvm/nvm.sh

nel file .bash_profile per il tuo utente

Se si desidera quindi utilizzare sudo con quell'utente, assicurarsi di includere il parametro -i per impostare sudo sull'ambiente utente. per esempio

sudo -iu jenkins npm install grunt-cli

4

semplicemente reinstallare.

Su RHEL, CentOS e Fedora

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

poi

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

facile! .. sia node che npm ora funzionano come un incantesimo!


3

Ho risolto questo problema con

apt-get install npm2deb

1
qual è questa risposta? npm2deb è di terzi
Beau Bouchard il

1
non è del tutto "fidato" in quanto in terze parti può essere probabilmente più compromesso che da npm direttamente dalla fonte. non so nulla di npm2deb ma pensate che se voleste usarlo nella vostra azienda, probabilmente sarebbero severi nel controllarlo
Kyle Calica -

È ovvio per tutti.
Игорь Демянюк,

1

Ho avuto lo stesso problema, il motivo era che il gestore di pacchetti npm non era installato durante l'installazione del nodo. Ciò è stato causato a causa del seguente errore: Nel processo di installazione è presente un passaggio chiamato "Installazione personalizzata", qui è possibile scegliere una delle seguenti opzioni: 1) Runtime Node.js (selezionato per impostazione predefinita). 2) npm package manager 3) Collegamenti alla documentazione online. 4) Aggiungi al percorso. Se si procede così com'è npm il gestore pacchetti non verrà installato e quindi si otterrà l'errore.

Soluzione: selezionare npm package manager quando si ottengono queste opzioni. Questo ha funzionato per me.


1

Se hai scaricato il pacchetto del nodo ed estratto da qualche parte come /optpuoi semplicemente creare un link simbolico all'interno /usr/local/bin.

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

1

Ho anche avuto lo stesso problema in Homestead e ho provato molti modi. Ci ho provato

sudo apt-get install nodejs

Ottengo il seguente errore:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Alla fine ci ho provato

sudo apt-get dist-upgrade

Ha funzionato bene.

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0


1

Lavora per me Risolvere errori di autorizzazioni EACCES durante l'installazione di pacchetti a livello globale

Per ridurre al minimo la possibilità di errori di autorizzazione, è possibile configurare npm per utilizzare una directory diversa. In questo esempio, creerai e utilizzerai la directory nascosta nella tua home directory.

Eseguire il backup del computer. Nella riga di comando, nella tua home directory, crea una directory per installazioni globali:

 mkdir ~/.npm-global

Configurare npm per utilizzare il nuovo percorso della directory:

 npm config set prefix '~/.npm-global'

Nel tuo editor di testo preferito, apri o crea un file ~ / .profile e aggiungi questa riga:

 export PATH=~/.npm-global/bin:$PATH

Sulla riga di comando, aggiorna le variabili di sistema:

 source ~/.profile

Per testare la tua nuova configurazione, installa un pacchetto a livello globale senza usare sudo:

 npm install -g jshint

Questo ha funzionato alla grande e ha risparmiato molto fastidio!
Sumomo

0

Percorso binario npm aggiunto al percorso sudo utilizzando visudo e modifica "percorso_sicuro"

Ora "sudo npm" funziona


0

Rimuovi nodo completamente:

  brew uninstall --force node

Installa di nuovo:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'

0

Nel caso in cui potesse essere utile per chiunque utilizzi i rh-*pacchetti, questo ha funzionato per me:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm

0

Da quando ho installato node.js usando il file .tar disponibile su node.js, ho dovuto mettere la posizione della directory del nodo su:

~ / .Bashrc

di root cambiando da utente normale a root usando il comando:

sudo -i

quindi ho dovuto aggiungere il percorso al nodo in cui l'ho estratto nel file .bashrc come di seguito: inserisci qui la descrizione dell'immagine

quindi riferito .bashrc usando

. ~ / .Bashrc

lì dopo

npm: command not found

andato via


0

Per me, nessuno dei metodi sopra menzionati usando Homebrew non ha funzionato su macOS. Quindi, ho disinstallato il nodo usando Homebrew e scaricato il pacchetto del nodo da https://nodejs.org/en/download/ e installato. Ha funzionato come un fascino.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.