sudo: npm: Befehl nicht gefunden


200

Ich versuche, auf die neueste Version von Node zu aktualisieren. Ich folge den Anweisungen unter http://davidwalsh.name/upgrade-nodejs

Aber wenn ich es mache:

sudo npm install -g n

Ich bekomme den Fehler:

sudo: npm: command not found

npm funktioniert ohne sudo. Wenn ich es tue:

whereis node

Aha:

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

Laufen:

which npm

Zeigt an:

/usr/local/node/bin/npm

Ich habe die Lösung unter https://stackoverflow.com/a/5062718/1246159 ausprobiert

Aber ich bekomme immer noch den gleichen Fehler. Ich habe mir auch die Datei / etc / sudoers angesehen und die entsprechende Zeile lautet:

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

Das sieht für mich gut aus. Wie kann ich NPM möglicherweise mit dem Befehl sudo zum Laufen bringen?


4
Funktioniert das? sudo /usr/bin/npm install -g n
Robertklep

2
Können Sie versuchen, den Knoten neu zu installieren? Es hört sich so an, als hätten Sie npm gelöscht.
Jeff Sloyer

1
Sie haben möglicherweise /usr/local/node/binzu Ihrem hinzugefügt $PATH, npmsollten aber in installiert sein /usr/local/bin. Das erste Verzeichnis befindet sich nicht in secure_pathdem erklärt wird, warum sudoes nicht gefunden werden kann.
Robertklep

1
Mit nvmUbuntu hier - mit @robertklep Kommentar habe ich versucht sudo /home/${user}/.nvm/version/node/${version}/bin/npm installund es hat funktioniert.
Stav Pan Geffen

2
Es löste mein Problem durch eine Neuinstallation aus dem folgenden Paket. nodejs.org/en/download
Marghoob Suleman

Antworten:


125

Die npm-Datei sollte sich in befinden /usr/local/bin/npm. Wenn es nicht vorhanden ist, installieren Sie node.js erneut mit dem Paket auf der Website . Das hat in meinem Fall funktioniert.


Vielen Dank. Wenn Sie den Knoten in anderen Datenlaufwerken installieren, auf denen os nicht installiert ist, können Sie diesen Pfad nicht finden.
Hardik Darji

1
im Fall von Mac OS mit Homebrew. Zwei Schritte sind: (1) welcher Knoten (2) welcher npm, der sich beide in / usr / local / bin befinden sollte (wo Homebrew den Knoten / symlinks + npm installiert) ... Um dies zu beheben, versuchen Sie (1) den Brau-Arzt (2) den Brau-Neuinstallationsknoten, wenn er immer noch Probleme verursacht. Überprüfen Sie Ihren Pfad (echo $ PATH). Sie müssen über mehrere Bin-Speicherorte verfügen, die auf verschiedene Knoteninstallationen verweisen. Wenn dies der Fall ist, bereinigen Sie Ihr ~ / .bashrc / ~ / .bash_profile (wie in ordentlicher), sodass / usr / local / bin vorhanden ist geladen, ohne dass ein anderer auf eine zufällige Knoteninstallation verweist.
Jimmy MG Lim

3
Dies ist eine Teillösung. Das Problem tritt auf, wenn Sie den Knoten manuell installieren. Sie müssen jede installierte Binärdatei mit / usr / bin oder / usr / local / bin verknüpfen. Das Festlegen des Pfads in bashrc von root funktioniert nicht, da er während sudo nicht gelesen wird. Dies ist daher die einzige Möglichkeit, die Sie scheinen, es sei denn, Sie installieren das Paket.
Garnelenwagen

Wie @shrimpwagon sagte, werden Sie am Ende der manuellen Anleitung aufgefordert, "sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / knotenjs / knoten- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / lokal / lib / knotenjs / knoten- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx "
James Nelson

168

ich musste es tun

sudo apt-get install npm

das hat bei mir funktioniert.


6
Es ist schwer zu verstehen, was Sie ausdrücken möchten.
winziges Sonnenlicht

4
Dies ist veraltet. Was für mich funktioniert hat, waren diese Befehle, die ich hier gefunden habe: github.com/nodesource/distributions#debinstall # Verwenden von Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Verwenden von Debian als Root-Curl -sL deb.nodesource.com/setup_5.x | Bash - apt-get install -y nodejs
Hamed

4
@tinysunlight Ich bin nicht sicher, was unklar ist. Die Operation sagt, dass der Befehl npm fehlt. Dieser Befehl installiert den Befehl npm.
Velocibadgery

7
Dies ist nicht die richtige Antwort auf die Frage, da dies aus der npmbereits installierten Operation hervorgeht, die jedoch nicht erreichbar ist, wenn sie über sudo aufgerufen wird. Mit dieser Lösung installieren Sie die bereits vorhandene npm neu. Dies bekämpft eher die Symptome als die Ursache zu finden. Ich verstehe, dass dies für manche Menschen kaputte Dinge korrigieren könnte, aber es ist irreführend, so zu stehen.
Dominic

4
Wenn ich Node mit NVM unter Ubuntu 18.10 installiert habe, erkennt sudo npm nicht als Befehl. sudo apt-get install npmarbeitete für mich.
AlienKevin

91

Für MAC-Benutzer haben die folgenden Schritte für mich funktioniert.

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

5
Das brew uninstall nodehat bei mir nicht funktioniert, aber ich habe mit dem brew install nodeund weitergemacht brew postinstallund das Problem behoben. Vielen Dank
Trevor

2
Was macht brew postinstallgenau?
Oliver D

in Homebrew Version 2.2.14 brew postinstallist überflüssig
Arslan Khan

63

Ich hatte das gleiche Problem; Hier sind die Befehle, um das Problem zu beheben:

  • 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
Arbeitete für mich auf CentOS 7
Hirikarat

4
Arbeitete für mich Ubuntu 16.04.1 LTS. Ich benutze NVM, also war der erste Pfad zu dem Ort, an dem NVM Node und npm installiert hat (der Pfad enthält eine Version %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Bedauerlich , dass muss ich werde diese Antwort jedes Mal , wenn ich Update Referenz mit NVM darauf zurückzuführen, wie die Version in dem Pfad ändern wird
kas

1
Das hat es auch für mich gelöst! Ursprünglich geschrieben am Stapelüberlauf: Auf EC2: sudo-Knotenbefehl nicht gefunden, aber Knoten ohne sudo ist
Dominic

2
@kas sudo ln -s $(whereis node) /usr/bin/node Und so weiter. in Ihrem Bash-Profil.
Aravind Voggu

Arbeitete für mich in der AWS ec2-Instanz.
Chirag Purohit

26

WARNUNG (bearbeiten)

A zu tun chmod 777ist eine ziemlich radikale Lösung. Probieren Sie diese zuerst nacheinander aus und hören Sie auf, wenn Sie arbeiten:

  • $ 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 ist der einzige Installationsteil, bei dem ich ein Problem bekommen würde

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

Also ich

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

und Viola, npm ist jetzt verknüpft

$ npm -v
3.10.10

Extra

Wenn Sie es gewohnt -R 777auf lib würde meine Empfehlung verschachtelten Dateien und Verzeichnisse auf eine Standardeinstellung festgelegt werden:

  • $ 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 ..... hast du gerade empfohlen, den gesamten lokalen / lib-Ordner zu ändern?
sfratini

Was chmodsoll dieses Verzeichnis sein?
tim_xyz

1
@tim_xyz drwxr-xr-xsind die Standardeinstellungen für lib. Verwenden Sie jedoch NICHT die rekursive Funktion, -Rwenn Sie den Ordner zurücksetzen.
Jacksonkr

Vielen Dank! sudo chmod -R 777 / usr / local / lib / node_modules hat für mich gearbeitet
Hisagr


8

Für CentOS-Benutzer funktioniert dies für mich:

sudo yum install npm

1
Das Problem bei diesem Ansatz ist, dass er beispielsweise in Fedora in dnf / yum-Repos sehr veraltet ist
ACV

2
Unter CentOS 7 müssen Sie zuerst das EPEL-Repo aktivieren:yum install epel-release; yum install npm
hudolejev

8

Um npm-Pakete global mit sudo-Berechtigung zu installieren, /usr/bin/npmsollte verfügbar sein. Wenn npmin einem anderen Verzeichnis vorhanden, erstellen Sie einen Softlink wie:

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

Es funktioniert unter Fedora 25, Node8.0.0 und npm5.0.0


6

Unter macOS hat das bei mir funktioniert:

brew reinstall node

1
Tut mir leid unix, ich habe gerade bemerkt, dass die Frage mit einem Tag versehen ist , aber es könnte trotzdem hilfreich sein, da es das beste Google-Suchergebnis für "macos npm command not found" ist
friederbluemle

5

Für Debian nach der Installation des Knotens eingeben

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

5

Wenn Sie node / npm mit nvm installiert haben, muss die Konfigurationsdatei der nvm-Umgebung ausgeführt werden, bevor Sie eines der beiden Pakete verwenden können.

Dies ist im Allgemeinen in ~ / .nvm / nvm.sh zu finden.

Um dies automatisch auszuführen, umfassen Sie:

source ~/.nvm/nvm.sh

in der Datei .bash_profile für Ihren Benutzer

Wenn Sie dann sudo mit diesem Benutzer verwenden möchten, müssen Sie den Parameter -i angeben, damit sudo die Benutzerumgebung festlegt. z.B

sudo -iu jenkins npm install grunt-cli

4

einfach neu installieren.

Auf RHEL, CentOS und Fedora

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

dann

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

einfach! .. sowohl node als auch npm funktionieren jetzt wie ein Zauber!


3

Ich habe dieses Problem durch gelöst

apt-get install npm2deb

1
Was ist diese Antwort? npm2deb ist eine dritte Partei
Beau Bouchard

1
Es ist nicht ganz "vertrauenswürdig", da es bei Drittanbietern mit größerer Wahrscheinlichkeit kompromittiert werden kann als ab npm direkt von der Quelle. Ich weiß nichts über npm2deb, aber denken Sie darüber nach, wenn Sie es in Ihrem Unternehmen verwenden
möchten

Es ist für alle offensichtlich.
10горь Демянюк

1

Ich hatte das gleiche Problem, der Grund dafür war, dass der npm-Paketmanager während der Installation des Knotens nicht installiert wurde. Dies wurde durch den folgenden Fehler verursacht: Während des Installationsvorgangs gibt es einen Schritt namens "Benutzerdefiniertes Setup". Hier haben Sie die Möglichkeit, eine der folgenden Optionen auszuwählen: 1) Laufzeit von Node.js (Dies ist standardmäßig ausgewählt). 2) npm package manager 3) Verknüpfungen zur Online-Dokumentation. 4) Zum Pfad hinzufügen. Wenn Sie so weitermachen, wie es ist, wird der npm-Paketmanager nicht installiert und daher wird der Fehler angezeigt.

Lösung: Wählen Sie npm package manager aus, wenn Sie diese Optionen erhalten. Das hat bei mir funktioniert.


1

Wenn Sie das Knotenpaket heruntergeladen und irgendwo extrahiert haben /opt, können Sie einfach einen symbolischen Link erstellen /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

Ich hatte auch das gleiche Problem in Homestead und habe viele Möglichkeiten ausprobiert. Ich habe es mit versucht

sudo apt-get install nodejs

Ich erhalte folgende Fehlermeldung:

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.

Endlich habe ich es mit versucht

sudo apt-get dist-upgrade

Es hat gut funktioniert.

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

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


0

Der npm-Binärpfad wurde mit visudo an den sudo-Pfad angehängt und "secure_path" bearbeitet.

Jetzt funktioniert "sudo npm"


0

Knoten vollständig entfernen:

  brew uninstall --force node

Erneut installieren:

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

0

Falls dies für jeden nützlich sein könnte, der rh-*Pakete verwendet, hat dies für mich funktioniert:

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

0

Da ich node.js mit der auf node.js verfügbaren .tar-Datei installiert habe, musste ich den Speicherort des Knotenverzeichnisses auf Folgendes setzen:

~ / .bashrc

von root durch Wechsel vom normalen Benutzer zum root mit dem folgenden Befehl:

sudo -i

dann musste ich den Pfad zum Knoten hinzufügen, wo ich ihn wie folgt in die .bashrc-Datei extrahierte: Geben Sie hier die Bildbeschreibung ein

dann referenzierte .bashrc mit

. ~ / .bashrc

danach

npm: command not found

ging weg


0

Arbeit für mich Beheben von EACCES-Berechtigungsfehlern bei der globalen Installation von Paketen

Um die Wahrscheinlichkeit von Berechtigungsfehlern zu minimieren, können Sie npm so konfigurieren, dass ein anderes Verzeichnis verwendet wird. In diesem Beispiel erstellen und verwenden Sie ein verstecktes Verzeichnis in Ihrem Ausgangsverzeichnis.

Mach ein Backup von deinem Computer. Erstellen Sie in der Befehlszeile in Ihrem Ausgangsverzeichnis ein Verzeichnis für globale Installationen:

 mkdir ~/.npm-global

Konfigurieren Sie npm für die Verwendung des neuen Verzeichnispfads:

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

Öffnen oder erstellen Sie in Ihrem bevorzugten Texteditor eine ~ / .profile-Datei und fügen Sie diese Zeile hinzu:

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

Aktualisieren Sie in der Befehlszeile Ihre Systemvariablen:

 source ~/.profile

Um Ihre neue Konfiguration zu testen, installieren Sie ein Paket global, ohne sudo zu verwenden:

 npm install -g jshint

0

Für mich funktionierte eine der oben genannten Methoden mit Homebrew unter macOS nicht. Also habe ich node mit Homebrew deinstalliert und das Node-Paket von https://nodejs.org/en/download/ heruntergeladen und installiert. Es funktionierte wie ein Zauber.


-8

Installieren Sie node.js und führen Sie es einfach aus

npm install -g bower 

aus Ihrem Projektverzeichnis

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.