Der NodeJS-Interpreter name ( node
) unter Ubuntu wurde nodejs
aufgrund eines Namenskonflikts mit einem anderen Paket in umbenannt. Hier ist was die Readme. Debian sagt:
Der Upstream-Name für den Interpreter-Befehl Node.js lautet "node". In Debian wurde der Interpreter-Befehl in "nodejs" geändert.
Dies wurde durchgeführt, um eine Namespace-Kollision zu verhindern: Andere Befehle verwenden denselben Namen in ihrem Upstream, z. B. ax25-node aus dem "node" -Paket.
Skripte, die Node.js als Shell-Befehl aufrufen, müssen geändert werden, um stattdessen den Befehl "nodejs" zu verwenden.
Die Verwendung von nodejs macht es jedoch schwierig, Pakete mit zu installieren npm
. Die Paketinstallation schlägt mit folgendem Fehler fehl:
sh: 1: node: not found npm WARN This failure might be due to the use of legacy binary "node" npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian
Wie kann ich npm verständlich machen, dass nodejs bereits auf dem System installiert ist, der Name des Interpreters jedoch unterschiedlich ist?
ln -s nodejs node
in/usr/bin
. Es ist allerdings eine Art Hack.Antworten:
TL; DR:
Lassen Sie mich zunächst die Situation etwas näher erläutern. Im Sommer 2012 beschlossen die Debian-Betreuer, die ausführbare Datei von Node.js umzubenennen, um eine Art Namespace-Kollision mit einem anderen Paket zu verhindern. Es war eine sehr schwere Entscheidung für das Debian Technical Committee, da es die Abwärtskompatibilität beeinträchtigt.
Das Folgende ist ein Zitat aus dem Resolutionsentwurf des Ausschusses, der in der Debian- Mailingliste veröffentlicht wurde :
Absatz 2 ist die eigentliche Lösung für das Problem von OP. OP sollte versuchen, dieses Paket zu installieren, anstatt Symlink von Hand auszuführen. Hier ist ein Link zu diesem Paket auf der Debian-Paketindex- Website .
Es kann mit installiert werden
sudo apt-get install nodejs-legacy
.Ich habe keine Informationen darüber gefunden, wie NPM-Entwickler das Ganze übernehmen, aber ich denke, das
npm
Paket wird irgendwann repariert undnodejs-legacy
wird wirklich zum Vermächtnis.quelle
sudo apt-get install nodejs-legacy
Versuchen Sie, Node mit NodeJS zu verknüpfen. Finden Sie zuerst heraus, wo sich nodejs befindet
Dann Softlink-Knoten zu Knotenjs
Ich gehe davon aus, dass sich / usr / bin in Ihrem Ausführungspfad befindet. Dann können Sie testen, indem Sie node oder npm in Ihre Befehlszeile eingeben, und jetzt sollte alles funktionieren.
quelle
nodejs-legacy
Pakets ist einfacher./usr/bin
sei denn du bist esdpkg
. Die richtige Lösung (wenn Sie diesen manuellen Symlinking-Ansatz mögen) besteht darin , den Symlink/usr/local/bin
zu erstellen, der für lokale Installationen und Überschreibungen vorgesehen ist. Alles, was Sie manuell tun,/usr/bin
kann und wird vom Paketmanager überschrieben und / oder verwirrt.Sie können Nodejs auch mit NVM oder Nodejs Version Manager installieren. Die Verwendung eines Versionsmanagers bietet viele Vorteile . Eine davon ist, dass Sie sich über dieses Problem keine Sorgen machen müssen.
Anleitung:
Sobald die erforderlichen Pakete installiert sind, können Sie das nvm-Installationsskript von der GitHub-Seite des Projekts herunterladen. Die Versionsnummer kann unterschiedlich sein, aber im Allgemeinen können Sie sie mit der folgenden Syntax herunterladen und installieren:
Dadurch wird das Skript heruntergeladen und ausgeführt. Die Software wird in einem Unterverzeichnis Ihres Home-Verzeichnisses unter installiert
~/.nvm
. Außerdem werden Ihrer~/.profile
Datei die erforderlichen Zeilen hinzugefügt, um die Datei zu verwenden.Um Zugriff auf die NVM-Funktionalität zu erhalten, müssen Sie sich abmelden und erneut anmelden. Sie können auch die Datei ~ / .profile als Quelle verwenden, damit Ihre aktuelle Sitzung über die Änderungen informiert ist:
Nachdem Sie nvm installiert haben, können Sie isolierte Node.js-Versionen installieren.
Um herauszufinden, welche Versionen von Node.js für die Installation verfügbar sind, können Sie Folgendes eingeben:
Wie Sie sehen können, ist die neueste Version zum Zeitpunkt dieses Schreibens v0.11.14. Sie können das installieren, indem Sie Folgendes eingeben:
Normalerweise wechselt nvm zur Verwendung der zuletzt installierten Version. Sie können nvm ausdrücklich anweisen, die gerade heruntergeladene Version zu verwenden, indem Sie Folgendes eingeben:
Wenn Sie Node.js mit nvm installieren, wird die ausführbare Datei als Knoten bezeichnet. Sie können die aktuell von der Shell verwendete Version anzeigen, indem Sie Folgendes eingeben:
Das Comeplete-Tutorial finden Sie hier
quelle
usr/bin/node
. So liefsudo ln -s /home/www/.nvm/v0.10.36/bin/node /usr/bin/node
Installieren Sie
nvm
zuerst mit:Führen Sie den Befehl aus
Führen Sie dies jetzt aus und es werden alle installierten oder anderen Versionen von Paketen angezeigt:
Installierte Pakete werden grün angezeigt. Installieren Sie die gewünschte Version:
Überprüfen Sie, wo nicht installiert ist:
Überprüfen Sie die aktuelle Version:
quelle
Kombinierte die akzeptierte Antwort mit
source ~/.profile
dem Kommentar, der gefaltet wurde, und einigen Bereinigungsbefehlen zuvor. Höchstwahrscheinlich müssen Sie auchsudo apt-get install npm
nach.quelle
für mich wurde das Problem gelöst durch,
quelle
Hier ist ein anderer Ansatz, den ich verwende, da ich n mag, um einfach zwischen Knotenversionen zu wechseln.
Installieren Sie auf einem neuen Ubuntu-System zuerst den 'System'-Knoten:
Installieren Sie dann n Modul global:
Da der Systemknoten zuerst installiert wurde (oben), kann das alternative System verwendet werden, um sauber auf den von n bereitgestellten Knoten zu zeigen . Stellen Sie zunächst sicher, dass das alternative System nichts für den Knoten hat:
Fügen Sie dann den von n bereitgestellten Knoten hinzu :
Als nächstes fügen Sie den vom System bereitgestellten Knoten hinzu (den mit curl installierten):
Wählen Sie nun den von n bereitgestellten Knoten über das interaktive Menü aus (wählen Sie
/usr/local/bin/node
aus dem Menü, das mit dem folgenden Befehl angezeigt wird):Da
/usr/local/bin
PATH normalerweise eine höhere Priorität hat als/usr/bin
, muss der folgende Alias erstellt werden (geben Sie ihn in .bashrc oder .zshrc ein), damit der alternative Systemknoten wirksam wird. Andernfalls hat der mit n in / usr / local / bin installierte Knoten immer Vorrang:Jetzt können Sie mit einfach zwischen Knotenversionen wechseln
n <desired node version number>
.quelle
Unter Linux Mint 17 habe ich beide Lösungen (Erstellen eines Symlinks oder Verwenden des
nodejs-legacy
Pakets) ohne Erfolg ausprobiert .Das einzige, was für mich endlich funktioniert hat, war die Verwendung des ppa von Chris Lea:
Dieser installierte Knoten Version 10.37 und npm 1.4.28. Danach konnte ich Pakete global installieren.
quelle
Wie andere Leute bereits erwähnen, werde ich vorschlagen, "sudo apt-get" nicht zu verwenden, um einen Knoten oder eine Entwicklungsbibliothek zu installieren. Sie können die erforderliche Version von https://nodejs.org/dist/v6.9.2/ herunterladen und Ihre eigene Umgebung einrichten.
Ich werde Tools wie nvm und n empfehlen, um Ihre Knotenversion zu verwalten. Es ist sehr bequem, mit diesen Modulen zu wechseln und zu arbeiten. https://github.com/creationix/nvm https://github.com/tj/n
Oder schreiben Sie eine grundlegende Bash, um zip / tar herunterzuladen, den Verschiebungsordner zu extrahieren und einen Softlink zu erstellen. Wenn Sie ein Update benötigen, zeigen Sie einfach mit dem alten Softlink auf die neu heruntergeladene Version. Wie ich es für mich selbst erstellt habe, können Sie auf Folgendes verweisen: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh
quelle
Einfache Lösung von hier
Sie können die Version angeben, indem Sie den Wert setup_x.x ändern, z. B. in setup_5.x
quelle
Ihr System kann den Pfadknoten js binär nicht erkennen.
1. welcher Knoten
2. Dann Softlink-Knoten zu NodeJS
Ich gehe davon aus, dass sich / usr / bin in Ihrem Ausführungspfad befindet. Dann können Sie testen, indem Sie node oder npm in Ihre Befehlszeile eingeben, und jetzt sollte alles funktionieren.
quelle
Deinstallieren Sie die Knotenversion, die Sie haben
Installieren Sie nvm (Node Version Manager) https://github.com/creationix/nvm
Jetzt können Sie jede gewünschte Version des Knotens installieren und zwischen den Versionen wechseln.
quelle
nvm
Ihrer Information: Wenn Sie die oben beschriebene Methode verwenden, beachten Sie, dass das Paket nodejs-Legacy v0.10.25 ist. (oder zumindest habe ich das gesehen, als ich es ausprobiert habe.)Ich habe die Verknüpfung zwischen / usr / sbin / node (die mit dem Paket ax25-node verknüpft ist) behoben und dann mithilfe der Befehlszeile eine Verknüpfung zu nodejs erstellt
Da Pakete wie Karma nicht mit dem Namen von nodejs funktionieren, jedoch die erste Zeile des Karma-Skripts von node zu nodejs ändern, möchte ich dieses Problem lieber ein für alle Mal beheben
quelle
Für mich war das Update das Entfernen der Node * -Pakete und auch der npm-Pakete.
Dann eine Neuinstallation als:
quelle
sudo apt-get autoclean
tut "dasselbe" alssudo apt-get install autoclean
Das Problem besteht nicht darin, im Installationsprogramm
nodejs durch node zu ersetzen oder den Pfad von / usr / bin / nodejs zu / usr / bin / node zu ändern
quelle
Dies ist der Fall, wenn Ihr Knoten nicht ordnungsgemäß installiert ist. Zuerst müssen Sie den Knoten deinstallieren und dann erneut installieren. Um den Knoten zu installieren, kann dies Ihnen helfen: http://array151.com/blog/nodejs-tutorial-and-set-up/
Danach können Sie die Pakete einfach installieren. Um die Pakete zu installieren, kann dies hilfreich sein
http://array151.com/blog/npm-node-package-manager/
quelle
Sie können einen Verbindungsknoten erstellen
ln -s nodejs
, in der/usr/bin
Hoffnung, dass dies Ihr Problem löst.quelle