nodejs vs node auf ubuntu 12.04

363

Ich habe nodejs auf Ubuntu gemäß den hier gegebenen Anweisungen installiert

Wenn ich node --versionim Terminal schreibe, sehe ich Folgendes:
-bash: /usr/sbin/node: No such file or directory

Ich kann jedoch den Knoten im /usr/sbin/Verzeichnis sehen.

Das Schreiben npm --versionzeigt das 1.3.5
Schreiben nodejs --versionzeigtv0.10.15

Außerdem kann ich den Knoten im /usr/bin/Verzeichnis sehen.

Wie komme ich zur nodeArbeit?

Wenn ich zsh anstelle von bash verwende, nodefunktioniert der Befehl.

Jatin
quelle
1
Wenn "Sie sehen den Knoten in / usr / bin /", was ist dann die Ausgabe von ls -l /usr/bin/node?
Randunel
1
@randunel Ich habe diese Ausgabelrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Jatin
Haben Sie Änderungen an Shell RC vorgenommen?
Randunel
Dies sieht nach Ihrer Bearbeitung wie ein Shell-Problem aus. Was wird export | grep PATHausgegeben, wenn es nicht verwendet wird zsh? (Es sollte /usr/binunter anderem gedruckt werden )
Randunel
1
Lösung + Erklärung hier: stackoverflow.com/questions/21168141/…
throbi

Antworten:

599

Sie müssen manuell einen Symlink erstellen /usr/bin/node. Verknüpfung für Bash-kompatible Shells:

sudo ln -s `which nodejs` /usr/bin/node

Oder wenn Sie nicht standardmäßige Shells verwenden, codieren Sie einfach den Pfad, den Sie finden, mit which nodejs:

sudo ln -s /usr/bin/nodejs /usr/bin/node

Später bearbeiten

Ich habe diese Erklärung in dem von Ihnen geposteten Link gefunden

Es besteht ein Namenskonflikt mit dem Knotenpaket (Amateur Packet Radio Node Program), und die Binärdatei von nodejs wurde von nodej zu nodejs umbenannt. Sie müssen / usr / bin / node mit / usr / bin / nodejs verknüpfen, oder Sie können das Amateur Packet Radio Node-Programm deinstallieren, um diesen Konflikt zu vermeiden.

Später später bearbeiten

Es ist schon eine Weile her, seit ich darauf geantwortet habe. Obwohl die Lösung, die ich hier gepostet habe, mehrmals für mich funktioniert hat, haben Benutzer in den Kommentaren einige weitere Lösungen gemeldet:

Von @ user229115

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

Von AskUbuntu (Benutzer leftium)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
Randunel
quelle
okay! Obwohl, wenn ich benutze zsh, dann nodefunktioniert der Befehl.
Jatin
1
Wie deinstalliere ich das Amateur Packet Radio Node-Programm? Ich habe es versucht, sudo apt-get remove nodeaber es heißtPackage node is not installed, so not removed
Jatin
Sie müssen es nicht deinstallieren. Nach Ihren Kommentaren scheint dies ein Shell-Problem zu sein, kein Knotenpaket-Problem.
Randunel
@ Randunels Antwort hat bei mir nicht funktioniert, da /usr/bin/env nodees nicht funktionieren würde. @ BennyMcBenBen Lösung funktionierte
francoisrv
2
Die Antwort von @ Tino ist die richtige, siehe die nodejs-legacyBeschreibung des Pakets. Die von @BennyMcBenBen verknüpfte Antwort wurde ebenfalls mit ähnlichen Anweisungen aktualisiert.
Trikasse
88

Ich denke das ist es:

sudo update-alternatives --install / usr / bin / knoten knoten / usr / bin / knotenjs 10

Debian-Alternativen verwenden.

user229115
quelle
3
Dies scheint die bessere Option zu sein als die akzeptierte Antwort. Sie ändert den Ordner / usr / bin / nicht manuell und nutzt die Infrastruktur für alternative Befehle
Dominik Fretz
Ich habe es nicht versucht, aber ich habe mir die update-alternativeDokumente angesehen. Wenn es wirklich funktioniert, dann ist es eine bessere Lösung :)
Randunel
3
Können Sie genauer sagen, was dies tut?
Bcorso
@ DominikFretz meh. Das Endergebnis ist mit dem Debian-spezifischen Befehl genau das gleiche wie mit einem POSIX-kompatiblen Befehl. (Du hättest es tun können update-alternatives --install /usr/local/bin/fribjazt node /usr/bin/nodejs 10.) Jedem sein eigenes, aber ich bevorzuge die Ebene ln.
Kojiro
2
Ich musste, source ~/.bashrcdamit dies wirksam wurde
iNulty
64

Anscheinend unterscheidet sich die Lösung zwischen Ubuntu-Versionen. Folgendes hat für mich unter Ubuntu 13.10 funktioniert:

sudo apt-get install nodejs-legacy

HTH

Bearbeiten: Faustregel:

Wenn Sie nodejsdie /usr/bin/nodeBinärdatei installiert haben, diese jedoch fehlt , installieren Sie sie ebenfalls nodejs-legacy. Dadurch wird nur der fehlende Softlink erstellt.

Nach meinen Tests ist in Ubuntu 17.10 und höher der Kompatibilitäts-Softlink /usr/bin/nodebereits nach der nodejsInstallation vorhanden, sodass nodejs-legacyer in diesen Versionen fehlt, da er nicht mehr benötigt wird.

Tino
quelle
Es scheint, dass NodeJS-Legacy nicht mehr gepflegt wird. neuester Build hält am 2013.04.10
francoisrv
8
nodejs-legacybraucht nicht viel Wartung. Es wird nur ein Softlink hinzugefügt sudo ln -s nodejs /usr/bin/node, der zumindest auf LTS 14.04
Tino
4
Unter Ubuntu 14.04 installieren NodeJS und NodeJS-Legacy dieselbe Version von Node (0.10.25). +1 bis @Tino.
Mark E. Haase
Funktioniert auch für mich in Debian Jessie. Dies sollte die akzeptierte Antwort sein, da dies so sein soll. Dies sollten nur Personen tun, die das Amateurfunkpaket verwenden. Ich frage mich, warum sie das Radiopaket nicht wie bei Chrom-BSU umbenannt haben.
Jérôme
Dies führt zu 2 Knoteninstanzen auf Ihrem System, die nicht mehr beibehalten werden. Es wird empfohlen, stattdessen eine Verknüpfung zu nodejs herzustellen.
PodTech.io
30

Ich habe das gleiche Problem in Ubuntu 14.04.

Ich habe "nodejs" installiert und es funktioniert, aber nur, wenn ich den Befehl "nodejs" verwende. Wenn ich versuche, "Knoten" zu verwenden, passiert nichts.

Ich habe dieses Problem auf folgende Weise behoben:

  1. Installieren Sie nodejs-Legacy

    sudo apt-get install nodejs-Legacy

Wenn ich danach "node" in die Befehlszeile eingebe, wird die Fehlermeldung "/ usr / sbin / node: Keine solche Datei oder kein solches Verzeichnis" angezeigt.

  1. Zweitens, was ich getan habe, ist es ein symbolischer Link auf "nodejs":

    sudo ln -s / usr / bin / nodejs / usr / sbin / node
Dmytro Medvid
quelle
4
Es gibt etwas Seltsames auf Ihrem System. nodesoll eingebaut werden /usr/bin/und nicht /usr/sbin/. Es sieht für mich so aus, als hätten Sie das Ubuntu- nodePaket von hamradio zuvor installiert (siehe packages.ubuntu.com/trusty/all/node/filelist ) und vergessen, hash -rauf Shell-Ebene ausgeführt zu werden, sodass sich die Shell immer noch an den falschen Pfad erinnerte. Der zweite hat das ebenfalls lnbehoben, aber es wird nicht mehr benötigt, nachdem Sie diese Shell verlassen haben.
Tino
Übrigens sind auch falsche Antworten gut, um alle Probleme aufgrund von drei Paketen mit sehr ähnlichen Namen zu erklären: node( /usr/sbin/nodefür etwas völlig anderes), nodejs( /usr/bin/nodejs) und nodejs-legacy( /usr/bin/node, abhängig vom Paket nodejs).
Tino
Das ist mir auch passiert. Ich hatte vor einiger Zeit einen Knoten von der Quelle installiert. node -v => 0.10.2während nodejs -v => 5.5.0. Das Ausführen des Befehls zeigte which nodeimmer auf diese lokale Installation. Am Ende musste ich unset NODE_PATH, was auf die lokale Installation zeigte, um es zu beheben. Danach node -v => 5.5.0und npm install begann für Pakete abhängig von Node => 5.0 zu arbeiten.
CHsurfer
11

Das ist mir auch passiert.

node -v => 0.10.2
nodejs -v => 5.5.0

Das Problem war, dass ich vor einiger Zeit einen Knoten von der Quelle installiert hatte. Laufen

which node

immer auf diese lokale Installation hingewiesen. Ebenfalls,

echo NODE_PATH

zeigte auf die lokale Installation.

Das Löschen des Verzeichnisses mit der Quellinstallation hat nicht geholfen. Es hat nur den Knotenbefehl gebrochen. Am Ende war es der Trick, die Umgebungsvariable NODE_PATH zu deaktivieren und zu löschen und dann nodejs neu zu installieren.

unset NODE_PATH
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

Danach,

node -v => 5.5.0

und die npm-Installation funktionierte je nach Knoten => 5.0 für Pakete.

CHsurfer
quelle
Das hat bei mir funktioniert. Schade, dass ich eine Stunde lang rumgespielt habe, bevor ich es gefunden habe.
Dustin Fraker
11

Node Version Manager (nvm)

Wenn Sie mehrere NodeJS-Versionen installieren und einfach zwischen ihnen wechseln möchten, würde ich die Verwendung von Node Version Manager empfehlen . Es löst auch das Namensproblem ( nodevs nodejs)

Es ist ganz einfach:

Installieren Sie eine nodejs-Version:

$ nvm install 4.4

Jetzt haben Sie zusätzlich zu der bereits installierten Version nodejs 4.4 und können einfach den nodeBefehl verwenden, um zur neu installierten Version zu gelangen:

$ node -v    // The new version added by nvm.
v4.4.5
$ nodejs -v  // The OS version is untouched and still available.
v0.10.25

Sie können weitere nodejs-Versionen installieren und einfach zwischen diesen wechseln:

$ nvm install 6.2
$ nvm use 6.2
Now using node v6.2.1 (npm v3.9.3)
$ node -v
v6.2.1
$ nvm use 4.4
Now using node v4.4.5 (npm v2.15.5)
Rotareti
quelle
2
Das ist mein Problem behoben, dank viel, fand ich einige nützliche Befehl für nvmauf Wie Node.js auf einem Ubuntu 14.04 Server installieren
Huy Nguyen
1
das hat bei mir funktioniert. Auch eine Anleitung finden Sie hier: digitalocean.com/community/tutorials/…
Koen Cornelis
10

Ich bin neu in all dem, aber für mich hat ein einfacher Alias ​​funktioniert:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

Zumindest, um Dinge direkt in Bash auszuführen und .js-Dateien auszuführen.

Phill
quelle
Arbeitete ohne rlwrap. Vielen Dank!
Shurik
Danke @Phill, du bist großartig!
Yusril Herlian Syah
9

Wie wäre es mit den offiziellen Anweisungen von der nodejs-Site :

Für v7:

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

Für v6:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Für v4:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

Ich habe diese von Windows Bash (über Subsystem für Linux - 14.04) und Raspbian (ARM Debian basiert) getestet. Wenn Sie sudo apt-get install -y nodejsdas Setup-Skript ausführen, ohne es zuvor ausgeführt zu haben, erhalten Sie den Knoten 0.10.

Wenn Sie native npm-Module installieren möchten, für die ein Build erforderlich ist, führen Sie außerdem Folgendes aus:

sudo apt install -y build-essential

Hinweis: Dies ist der empfohlene Pfad für jede Debian-basierte Distribution in allen Architekturen.

Kammerherr
quelle
7

Hinzufügen zu @ randunels korrekter Antwort (kann SO noch nicht kommentieren):

Ich musste auch / usr / local / bin / node mit / usr / bin / nodejs verknüpfen.

sudo ln -s /usr/bin/nodejs /usr/local/bin/node

Anscheinend hat dies den Befehl / usr / bin / node überschrieben.

Keine Ahnung, wie das eingestellt wurde, aber ich hoffe, es hilft jemand anderem, da es ein Schmerz war, herauszufinden, warum das oben Genannte für mich nicht funktioniert hat.

kfblake
quelle
7

Späte Antwort, aber für aktuelle Informationen ...

Wenn Sie node.js mit der empfohlenen Methode aus der Readme-Datei für die Node-Github-Installation installieren, wird empfohlen , die Anweisungen im Blog-Artikel zu Nodesource zu befolgen , anstatt von dem veralteten apt-get-Repo aus zu installieren. Node.js sollte mit dem nodeBefehl ausgeführt werden. sowie den nodejsBefehl, ohne einen neuen Symlink erstellen zu müssen.

Diese Methode aus dem Artikel ist:

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

Beachten Sie, dass dies für Version 0.12 gilt, die in nicht allzu ferner Zukunft wahrscheinlich veraltet sein wird.

Wenn Sie sich hinter einem Unternehmens-Proxy befinden (wie ich), möchten Sie dem Befehl sudo die Option -E hinzufügen, um die für den Proxy erforderlichen env-Variablen beizubehalten:

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -

Erresen
quelle
7

Das funktioniert bei mir:

alias node=nodejs

Nachdem Sie die Anweisungen in diesem Link befolgt haben.

Burak Tutanlar
quelle
4

Wenn Sie sich auf einer AWS EC2-Instanz befinden, auf der eine Ubuntu-Instanz ausgeführt wird (getestet unter Ubuntu 16.x), funktionieren diese Schritte möglicherweise für Sie:

    sudo apt-get update
    sudo apt-get --purge entferne den Knoten -y
    sudo apt-get --purge entferne nodejs -y
    sudo apt-get --purge entferne Legacy-Node -y
    sudo rm / usr / bin / node
    curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
    sudo apt-get install nodejs -y
    Knoten -v

Wenn alles korrekt ist, muss der letzte Befehl eine Ausgabe wie folgt haben: v6.xx.

Wenn nicht, führen Sie Folgendes aus:

    sudo ln -s / usr / bin / nodejs / usr / bin / node

Hoffentlich hilft das. Es hat mir magisch geholfen (hehe).

Vivek
quelle
3

Ich hatte das gleiche Problem symbolischer Link half mir aus: sudo ln -s / usr / bin / knotenjs / usr / bin / knoten nach der sudo npm install -g phantomjs-prebuilt

verlief reibungslos

arr
quelle
2

Die beste Möglichkeit zur Installation von nodejs ist NVM (Node Version Manager).

Vorherige Versionen löschen:

$ sudo apt-get purge node
$ sudo apt autoremove

Löschen Sie auch alle node_modules von $ sudo rm -rf node_modulesin dem Verzeichnis, das diesen Ordner enthält.

Node & Nodejs sind technisch dasselbe. Nur die Benennung hat sich geändert.

Installieren oder aktualisieren Sie zuerst nvm

als root laufen

$ sudo su 

Dann

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | Bash

ODER

$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | Bash

Überprüfen Sie nvm zum Pfad

$ source ~ / .profile
$ nvm ls-remote

Wenn Sie eine Fehlermeldung bezüglich der Auflistung erhalten, installieren Sie git.

$ sudo apt-get install git

Wiederholen:

$ nvm ls-remote
ODER
$ sudo nvm ls-remote

$ nvm installiere die benötigte Version 

Version überprüfen

# node --version
nvm benutze die von dir benötigte version

INFORMATIONSMÖGLICHKEIT:

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps

CSEngineer
quelle
1

Ich hatte einen Symlink erstellt, aber er funktionierte immer noch nicht.

Ich habe vergessen, mein Terminal neu zu starten (meine Kittverbindung). Nachdem ich es ohne den Symlink geklappt hatte :)

Jamie Hutber
quelle
1

Wird für absolute Anfänger hilfreich sein

Obwohl Sie die Antwort erhalten haben, wollten Sie nur darauf hinweisen, dass der nodeBefehl (ohne Parameter) den Knoten im REPL- Read-Eval-Print-Loop- Modus startet , um rohen Javascript-Code auszuführen.

Eine andere Möglichkeit, den nodeBefehl zu verwenden, besteht darin, ihm eine jsDatei als Parameter bereitzustellen. So benutzen wir es meistens.

Mohammed Zameer
quelle
0

Es ist optional, den vorhandenen Knoten und die Knotenjs zu entfernen, muss jedoch alternativ die neuesten 7.x-Knotenjs installieren.

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
Gino
quelle
0

Verwenden Sie einfach NVM (Node Version Manager) - https://github.com/creationix/nvm

Es ist zum Standard für die Verwaltung von Node.js geworden.

Wenn Sie eine neue Version benötigen:

nvm install NEW_VER
nvm use XXX

Wenn etwas schief geht, können Sie jederzeit zurückkehren

nvm use OLD_VER
Dimitar Mazhlekov
quelle
0

https://nodejs.org/en/download/

Download .pkg file on your mac and install it. it directly works.

  ~ which node
/usr/local/bin/node
  ~ node --version
v10.11.0
  ~ which npm
/usr/local/bin/npm
  ~ npm --version
6.4.1
Ashok R.
quelle