"Keine solche Datei oder Verzeichnis" Fehler bei der Verwendung von npm

34

Ich installierte Knoten und npm die Anweisungen unter Verwendung der bereitgestellten hier

Ich konnte Knoten erfolgreich verwenden. Beim Versuch, das Knotenmodul "Formidable" zu installieren, wird jedoch die folgende Fehlermeldung angezeigt:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

Wenn ich a mache, which npmerhalte ich die folgende Ausgabe:

$which npm
/usr/local/bin/npm

Ich habe keine Ahnung, was mit npm hier nicht stimmt - weißt du, wie ich das beheben kann?

user109187
quelle
Willkommen bei Ask Ubuntu! Ich sehe, dass Sie Node in installiert haben /usr/local/bin/. Die Pakete, wie Sie sie in den verknüpften Anweisungen verwendet haben, tun dies nicht. Ich denke, Sie haben auch einen anderen Knoten aus dem Quellcode installiert. Bitte erzähle die ganze Geschichte.
Gertvdijk
@gertvdijk Nun, anfangs war der Knoten 0.8.14 installiert. Ich wollte dieses auf 0.8.18 verbessern. Ich bin dann gelaufen, $sudo apt-get remove --purge nodejs npmaber das hat nicht funktioniert. node --versionnach der Installation von 0.8.18 zeigte noch 0.8.14. Also folgte ich einem Beitrag, den ich jetzt nicht finden kann - im Grunde genommen wurde er angewiesen, which nodegefolgt von rm -r /usr/local/bin/...- im Grunde genommen einigen knotenbezogenen Dateien in diesem Verzeichnis. Danach habe ich Node neu installiert und es war die aktualisierte Version. Es funktioniert gut, aber npm ist es nicht.
user109187
Ja, das passiert, wenn Sie von der Quelle installieren. Es wird Ihre Paketverwaltung und Sie als Benutzer verwirren. Bitte installieren Sie Software nur als Paket, es sei denn, Sie wissen, was Sie tun. Verwenden Sie die Deinstallationsanweisungen mit den Skripten, mit denen Sie diese frühere Version installiert haben, um sie ordnungsgemäß zu deinstallieren. Bitte bearbeiten Sie Ihre Frage, um weitere Informationen bereitzustellen. Dies ist eine Q & A-Site, kein Diskussionsforum, sehen Sie? :)
gertvdijk
@gertvdijk Ich habe den Beitrag gefunden, der angewiesen hat, die Dateien manuell zu entfernen - stackoverflow.com/a/5917184/1907800 . Der Pfad hier ist / usr / bin / node
user109187

Antworten:

51

Unter Berücksichtigung des @gertvdijk-Hinweises habe ich NPM mithilfe des Skripts deinstalliert:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(welche hier zu finden sind )

Auch nach dem Ausführen des oben genannten habe ich einen weiteren Fehler erhalten:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

Also lief ich hash -rim Terminal (gemäß den Anweisungen unter NPM wird nach dem Upgrade nicht ausgeführt ) und voila - es funktionierte. NPM funktioniert jetzt!

user109187
quelle
1
Das einzig nützliche dabei war das Erkennen hash, mit dem einfach auf einen anderen Node / npm verwiesen werden kann (was ist, wenn ich mit mehr als einer Version von Node arbeiten
möchte
Schöner Gastnutzer.
LM_Fielding
4
hash -r hat mich gerettet
diogo.abdalla
was macht hashdas?
Chanjung Kim
11

Ubuntu und einige Linux-Distributionen installieren den Interpreter des Knotens als /usr/bin/nodejs und nicht als /usr/local/bin/node.

Sie können dieses Problem lösen, indem Sie das installieren nodejs-legacy Paket , das einen Symlink von /usr/bin/nodejsbis erstellt /usr/bin/node.

Lösung:

sudo apt-get install nodejs-legacy

Referenzen: NodeJS-Legacy-Paket

Pac
quelle
1
Es scheint nodejs-legacynicht mehr zu existieren.
Martín De la Fuente
2

Offenbar haben Sie vor einiger Zeit eine andere Node-Version aus dem Quellcode installiert. Dies wird durch den /usr/local/binPfad angezeigt, in dem es jetzt installiert zu sein scheint.

  1. Deinstallieren Sie das Programm, das Sie von der Quelle installiert haben. Informationen dazu finden Sie in den Anweisungen, die der Quelle beiliegen. Es gibt keine Möglichkeit, installierte Softwareskripte zu deinstallieren, die nicht mit der Paketverwaltung Ihres Systems kompatibel sind.
  2. Installieren Sie die Pakete mit den Anweisungen, die Sie in Ihrer Frage verlinkt haben.
  3. Stellen Sie sicher, dass which npmjetzt /usr/binals Installationspfad aufgeführt wird.

Im Allgemeinen sollten Sie niemals Pakete aus dem Quellcode installieren müssen. Wenn Sie dies dennoch tun, beachten Sie bitte die Konsequenzen, da Sie hier die Paketverwaltung außer Kraft setzen und es dadurch verwirrt wird.

gertvdijk
quelle