NodeJs kann nicht installiert werden: /usr/bin/env: node: Keine solche Datei oder Verzeichnis
I'm versucht, nodeJs in meinem Ubuntu 14.04 zu installieren, um GruntJs zu verwenden.
Ich habe über Ubuntu andere Art und Weise zu tun (Probleme?) gelesen, so ist dies, was ich getan habe, um es zu installieren:
sudo apt-get install npm
sudo npm install -g grunt-cli
Nachdem ich grunt eingegeben habe, habe ich die Fehlermeldung erhalten:
/usr/bin/env: node: No such file or directory
Also, ich'habe es versucht:
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs
sudo apt-get update
Und wieder versucht, und immer noch die Fehlermeldung, ich've versucht:
sudo add-apt-repository https://launchpad.net/~chris-lea/+archive/node.js/
sudo apt-get install -y nodejs
Ich'habe diese Meldung erhalten:
nodejs is already the newest version.
0 to upgrade, 0 to newly install, 0 to remove and 3 not to upgrade.
Ich habe vorsichtshalber eine Bereinigung versucht:
sudo apt-get autoremove
Aber nein, der Fehler ist immer noch da: Wenn ich grunt eingebe, bekomme ich immer noch /usr/bin/env: node: No such file or directory
Was sollte ich tun?
295
17
Ich habe die Antwort gefunden. Nur für den Fall, dass es jemandem hilft, poste ich es hier:
Ein Symlink löst das Problem:
ln -s /usr/bin/nodejs /usr/bin/node
(Mein Dank und +1 Stimme an bodokaiser).HINWEIS: Ich denke, dieser Beitrag ist kein exaktes Duplikat, denn dieser Beitrag war eher eine browserifizierte Frage.
Das Problem liegt nicht an der Version von Node. Stattdessen ist es die Art und Weise, wie NodeJS standardmäßig in Ubuntu installiert wird. Wenn Sie eine Node-Anwendung in Ubuntu ausführen, müssen Sie
nodejs somethign.js
stattnode something.js
ausführen.Der Name der Anwendung, die im Terminal aufgerufen wird, ist also
nodejs
und nichtnode
. Deshalb braucht man einen Symlink, um alle Befehle, die alsnode
empfangen werden, einfach annodejs
weiterzuleiten.Ich denke, Sie sollten die neueste Node-Version aktualisieren.
Wenn Sie mit dem Befehl nodejs auf einen Knoten auf einem Ubuntu-Terminal zugreifen können, kann dieses Problem einfach gelöst werden, indem -Erzeugung einer symbolischen Verknüpfung von nodejs und node unter Verwendung
ln -s /usr/bin/nodejs /usr/bin/node
und dies könnte das Problem lösen
In meinem Fall wurde das Problem durch [Installation von nodejs-legacy][1] gelöst.
[1]: https://nodejs.org/en/download/package-manager/
Einfach tun
Und es wird anfangen zu funktionieren.
I'ich habe festgestellt, dass es sich dabei oft um einen Fehler mit falscher Namensgebung handelt. Wenn Sie von einem Paketmanager installieren, wird Ihr Bin möglicherweise nodejs genannt, so dass Sie es einfach wie folgt symbolisch verlinken müssen
Wenn Sie bereits nodejs installiert haben (prüfen Sie mit
which nodejs
) und don't ein anderes Paket installieren wollen, können Sie als root:Als ich den Schluck verwendet habe, bekam ich diesen Fehler.
/usr/bin/env: 'Knoten': Keine solche Datei oder Verzeichnis
Dies wurde durch die Ausführung des folgenden Befehls entfernt. Sie müssen bedenken, dass das Verzeichnis /usr/bin alle Berechtigungen hat.
das funktioniert bei mir.
Während
ln -s
die offensichtlich einfachste Lösung ist, ein Stück Erklärung:Dieser Rat kommt auf, wenn Sie
sudo apt-get install nodejs
installieren.Also irgendein anderes bekanntes Werkzeug (ich weiß nicht't weiß, was es macht. Obwohl es den ubuntu-Repositorys bekannt ist, wird es in 16.04 nicht standardmäßig installiert) diesen Namensraum belegt.
Wäre nett gewesen, wenn Ubuntu einen Rat angeboten hätte, wie man dies 'sauber' beheben könnte, wenn nicht von Hand, was sonst das Paket tun würde. (eine Kollision bleibt eine Kollision... wenn+wenn sie auftreten würde)
Hierfür gibt es zwei Lösungen:
a) Setzen Sie Ihre PATH-Variable so, dass sie "/usr/local/bin" einschließt;
exportieren Sie PATH="$PATH:/usr/local/bin"
b) Erstellen Sie einen Symlink zu "/usr/bin" der sich bereits in Ihrem PATH
ln -s /usr/bin/nodejs /usr/bin/node
Ich hoffe, es hilft.
Abhängig davon, wie Sie Ihren Knoten installiert haben, ist er meistens nicht in /usr/bin/, in meinem eigenen Fall habe ich nvm zur Installation verwendet, so dass mein Knoten in ./nvm/versions war.
Mit diesem Befehl
which node
habe ich den Pfad herausgefunden, aber um die Arbeit zu erleichtern, können Sie diesen Befehl ausführen.Mit dem obigen Befehl wird der Standort Ihres Knotens ermittelt und ein Link für Sie erstellt.
Befolgen Sie diese Befehle, um das Problem zu beheben.
In einem Terminal:
Bereinigen Sie den gesamten NPM-Cache:
Installieren Sie die neueste stabile Version von Node.js:
Nun wurde die neueste Version von Node.js installiert. Überprüfen Sie die Version mit:
Für meinen Fall verlinken Sie did NOT work wie folgt
Aber Sie können /usr/local/bin/lessc als root öffnen und die erste Zeile von node zu nodejs ändern.
Benennen Sie einfach den Befehl oder Dateinamen
ln -s /usr/bin/nodejs /usr/bin/node
mit diesem Befehl umFür mich hat die akzeptierte Antwort noch nicht funktioniert. Ich habe wie hier vorgeschlagen begonnen:
Nachdem ich dies getan hatte, erhielt ich den folgenden Fehler:
Die Lösung bestand darin, die aktuellste Version von node von https://nodejs.org/en/download/ herunterzuladen.
Das habe ich dann getan:
Nun war die Aktualisierung endlich erfolgreich:
npm -v
wurde von 3.2.1 auf 6.4.1 geändert.