nodejs vs node na Ubuntu 12.04

363

Zainstalowałem nodejs na Ubuntu z instrukcji podanych tutaj

Kiedy piszę node --versionw terminalu, widzę to:
-bash: /usr/sbin/node: No such file or directory

Widzę jednak węzeł w /usr/sbin/katalogu.

Pisanie npm --versionprogramów 1.3.5
Pisanie nodejs --versionprogramówv0.10.15

Ponadto widzę węzeł w /usr/bin/katalogu.

Jak mam zacząć nodepracę?

Ponadto, jeśli użyję zsh zamiast bash, wtedy nodepolecenie działa.

Jatin
źródło
1
Jeśli „widzisz węzeł w / usr / bin /”, to jakie jest wyjście ls -l /usr/bin/node?
randunel
1
@ randunel Mam ten wyniklrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Jatin
Czy wprowadziłeś jakieś zmiany w shell rc?
randunel
Po edycji wygląda to na problem z powłoką. Co się dzieje, export | grep PATHgdy nie jest używany zsh? (powinien /usr/binmiędzy innymi drukować )
randunel
1
rozwiązanie + wyjaśnienie tutaj: stackoverflow.com/questions/21168141/...
throbi 15.04.16

Odpowiedzi:

599

Musisz ręcznie utworzyć dowiązanie symboliczne /usr/bin/node. Skrót do powłok kompatybilnych z bash:

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

Lub jeśli używasz niestandardowych powłok, po prostu zakoduj ścieżkę, którą znajdziesz which nodejs:

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

Później edytuj

To wyjaśnienie znalazłem w opublikowanym linku

Wystąpił konflikt nazewnictwa z pakietem węzła (program amatorskiego pakietu radiowego węzła), a nazwa pliku binarnego nodejs została zmieniona z węzła na nodejs. Będziesz musiał dowiązać symbolicznie / usr / bin / node do / usr / bin / nodejs lub możesz odinstalować program węzła radiowego pakietu amatorskiego, aby uniknąć tego konfliktu.

Później edytuj

Minęło trochę czasu, odkąd odpowiedziałem na to. Chociaż rozwiązanie, które tutaj opublikowałem, działało dla mnie kilka razy, użytkownicy zgłosili kilka innych rozwiązań w komentarzach:

Od @ user229115

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

From AskUbuntu (użytkownik leftium)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
randunel
źródło
w porządku! Chociaż, jeśli użyję zsh, to nodepolecenie działa.
Jatin
1
Ponadto, jak odinstalować program Amateur Packet Radio Node? Próbowałem sudo apt-get remove node, ale mówiPackage node is not installed, so not removed
Jatin
Nie musisz go odinstalowywać, po komentarzach wygląda to na problem z powłoką, a nie na problem z pakietem węzłów.
randunel
Odpowiedź @ randunel nie działała dla mnie, ponieważ /usr/bin/env nodenie zadziałała. @ Rozwiązanie BennyMcBenBena zadziałało
francoisrv
2
@ Odpowiedź Tino jest prawidłowa, patrz nodejs-legacyopis pakietu. Odpowiedź połączona przez @BennyMcBenBen została zaktualizowana o podobne instrukcje.
tricasse
88

Myślę, że to jest to:

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

Korzystanie z alternatyw Debiana.

użytkownik229115
źródło
3
Wydaje się, że jest to lepsza opcja niż zaakceptowana odpowiedź. Nie zmienia ręcznie folderu / usr / bin / i wykorzystuje infrastrukturę do alternatywnych poleceń
Dominik Fretz
Nie próbowałem tego, ale spojrzałem na update-alternativedokumenty. Jeśli to naprawdę działa, to jest lepsze rozwiązanie :)
randunel
3
czy możesz dokładniej określić, co to robi?
bcorso
@DominikFretz meh. Wynik końcowy jest dokładnie taki sam przy użyciu polecenia specyficznego dla Debiana, a polecenia zgodnego z POSIX. (Mogłeś to zrobić update-alternatives --install /usr/local/bin/fribjazt node /usr/bin/nodejs 10.) Do każdego własnego, ale wolę równinę ln.
kojiro
2
Musiałem source ~/.bashrcto zrobić, aby wejść w życie
niedziele
64

Najwyraźniej rozwiązanie różni się w zależności od wersji Ubuntu. Następujące działało dla mnie na Ubuntu 13.10:

sudo apt-get install nodejs-legacy

HTH

Edycja: Ogólna zasada:

Jeśli masz zainstalowany, nodejsale brakuje Ci /usr/bin/nodepliku binarnego, zainstaluj również nodejs-legacy. To po prostu tworzy brakujący link miękki.

Według moich testów, w Ubuntu 17.10 i nowszych jest już zainstalowany link programowy kompatybilności /usr/bin/nodepo nodejszainstalowaniu, więc nodejs-legacybrakuje go w tych wydaniach, ponieważ nie jest już potrzebny.

Tino
źródło
wydaje się, że dziedzictwo nodejs nie jest już utrzymywane. ostatnia kompilacja kończy się o 10.04.2013
francoisrv
8
nodejs-legacynie wymaga wiele konserwacji. Po prostu dodaje softlink podobny do sudo ln -s nodejs /usr/bin/node, przynajmniej na LTS 14.04
Tino
4
Na Ubuntu 14.04 nodejs i nodejs-legacy instalują tę samą wersję Node (0.10.25). +1 do @Tino.
Mark E. Haase
Działa również dla mnie w Debian Jessie. To powinna być zaakceptowana odpowiedź, ponieważ tak właśnie powinno być. Tylko osoby korzystające z amatorskiego pakietu radiowego nie powinny tego robić. Zastanawiam się, dlaczego nie zmienili nazwy pakietu radiowego, tak jak w przypadku chromu-bsu.
Jérôme,
Spowoduje to wystąpienie 2 wystąpień węzła w systemie i nie będzie to już utrzymywane ... Zamiast tego zalecamy link do nodejs.
PodTech.io
30

Mam ten sam problem w Ubuntu 14.04.

Zainstalowałem „nodejs” i działa, ale tylko jeśli użyję polecenia „nodejs”. Jeśli spróbuję użyć „węzła”, nic się nie dzieje.

Naprawiłem ten problem w następujący sposób:

  1. Zainstaluj nodejs-legacy

    sudo apt-get install nodejs-legacy

Po wpisaniu „node” w wierszu polecenia pojawia się komunikat o błędzie „/ usr / sbin / node: brak takiego pliku lub katalogu”

  1. Po drugie, co zrobiłem, jest to symboliczny link do „nodejs”:

    sudo ln -s / usr / bin / nodejs / usr / sbin / node
Dmytro Medvid
źródło
4
W twoim systemie jest coś dziwnego. nodema być zainstalowany /usr/bin/i nie /usr/sbin/. Wygląda to dla mnie tak, jakbyś zainstalował Ubuntu nodepakiet z HAMRadio (zobacz packages.ubuntu.com/trusty/all/node/filelist ) i zapomniał uruchomić hash -rna poziomie powłoki, tak że powłoka nadal pamiętał złą drogę. Drugi również to lnnaprawił, ale nie jest już potrzebny po opuszczeniu tej powłoki.
Tino
BTW, nawet złe odpowiedzi są dobre, aby wyjaśnić wszystkie problemy związane z trzema pakietami o bardzo podobnych nazwach: node( /usr/sbin/nodedla czegoś zupełnie innego), nodejs( /usr/bin/nodejs) i nodejs-legacy( /usr/bin/node, zależy od pakietu nodejs).
Tino
To mi się też przydarzyło. Jakiś czas temu zainstalowałem węzeł ze źródła. node -v => 0.10.2jednocześnie nodejs -v => 5.5.0. Uruchomienie polecenia which nodezawsze wskazywało na tę instalację lokalną. W końcu musiałem to zrobić unset NODE_PATH, co wskazywało na instalację lokalną, aby to naprawić. Po tym, node -v => 5.5.0i npm install zaczął pracować dla pakietów w zależności od węzła => 5,0.
CHsurfer
11

To mi się też przydarzyło.

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

Problem polegał na tym, że jakiś czas temu zainstalowałem węzeł ze źródła. Bieganie

which node

zawsze wskazywał na tę lokalną instalację. Również,

echo NODE_PATH

wskazał na instalację lokalną.

usunięcie katalogu z instalacją źródłową nie pomogło. Właśnie złamał polecenie węzła. Ostatecznie załatwienie zmiennej środowiskowej NODE_PATH i czyszczenie, a następnie ponowna instalacja nodejs załatwiły sprawę.

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

Po tym,

node -v => 5.5.0

i npm install zaczął działać dla pakietów w zależności od Węzła => 5.0.

CHsurfer
źródło
To zadziałało dla mnie. Szkoda, że ​​gadałem przez godzinę, zanim go znalazłem.
Dustin Fraker
11

Menedżer wersji węzła (nvm)

Jeśli chcesz zainstalować wiele wersji nodejs i łatwo przełączać się między nimi, sugerowałbym użycie Node Version Manger . Rozwiązuje również problem nazewnictwa ( nodevs nodejs)

To dość proste:

Zainstaluj wersję nodejs:

$ nvm install 4.4

Teraz masz nodejs 4.4 oprócz wersji już zainstalowanej i możesz po prostu użyć nodepolecenia, aby przejść do nowo zainstalowanej wersji:

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

Możesz zainstalować więcej wersji nodejs i łatwo przełączać się między nimi:

$ 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
źródło
2
To rozwiązało mój problem, wielkie dzięki, znalazłem przydatne polecenie nvmdotyczące sposobu instalacji Node.js na serwerze Ubuntu 14.04
Huy Nguyen
1
to zadziałało dla mnie. Dostępny jest także przewodnik: digitalocean.com/community/tutorials/...
Koen Cornelis,
10

Jestem nowy w tym wszystkim, ale dla mnie zadziałał prosty alias:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

przynajmniej do uruchamiania rzeczy bezpośrednio w bash i wykonywania plików .js.

Phill
źródło
Pracował bez rlwrap. Dzięki!
Shurik
Dzięki @Phill, jesteś niesamowity!
Yusril Herlian Syah
9

A może skorzystasz z oficjalnych instrukcji ze strony nodejs :

W przypadku wersji 7:

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

Dla v6:

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

Dla v4:

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

Testowałem je z Windows Bash (przez podsystem dla Linuksa - 14.04) i raspbian (oparty na ARM Debian). Uruchomienie sudo apt-get install -y nodejsbez pierwszego uruchomienia skryptu instalacyjnego spowoduje uzyskanie węzła 0.10.

Jeśli planujesz zainstalować natywne moduły npm wymagające kompilacji, uruchom także:

sudo apt install -y build-essential

Uwaga: jest to zalecana ścieżka dla każdej dystrybucji opartej na Debianie we wszystkich architekturach.

cchamberlain
źródło
7

Dodanie do poprawnej odpowiedzi @ randunel (nie mogę jeszcze skomentować SO):

Musiałem także dowiązać symbolicznie / usr / local / bin / node do / usr / bin / nodejs.

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

Najwyraźniej zastąpiło to polecenie / usr / bin / node.

Nie mam pojęcia, jak to się stało, ale mam nadzieję, że pomoże to komuś innemu, ponieważ trudno było zrozumieć, dlaczego powyższe nie działało dla mnie.

kfblake
źródło
7

Późna odpowiedź, ale dla aktualnych informacji ...

Jeśli instalujesz node.js przy użyciu metody zalecanej z pliku Readme instalacji github dla węzła , sugeruje to postępowanie zgodnie z instrukcjami w artykule na blogu nodesource , zamiast instalowania z nieaktualnego repozytorium apt-get, node.js powinien uruchomić się za pomocą nodepolecenia, a także nodejspolecenie, bez konieczności tworzenia nowego dowiązania symbolicznego.

Ta metoda z artykułu to:

# 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

Pamiętaj, że dotyczy to wersji v0.12, która prawdopodobnie stanie się nieaktualna w niedalekiej przyszłości.

Ponadto, jeśli jesteś za korporacyjnym proxy (takim jak ja), będziesz chciał dodać opcję -E do polecenia sudo, aby zachować zmienne środowiskowe wymagane dla proxy:

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

Erresen
źródło
7

To działa dla mnie:

alias node=nodejs

Po wykonaniu instrukcji zawartych w tym linku.

Burak Tutanlar
źródło
4

Jeśli korzystasz z instancji AWS EC2 z uruchomioną instancją Ubuntu (przetestowaną na Ubuntu 16.x), poniższe kroki mogą Ci pomóc:

    sudo apt-get update
    sudo apt-get --purge remove node -y
    sudo apt-get --purge usuń nodejs -y
    sudo apt-get --purge remove 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
    węzeł -v

Jeśli wszystko jest w porządku, ostatnie polecenie powinno mieć wyjście takie jak: v6.xx

Jeśli nie, uruchom następujące czynności:

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

Mam nadzieję, że to pomoże. Pomogło mi to magicznie (hehe).

Vivek
źródło
3

Miałem ten sam problem, który pomógł mi link symboliczny: sudo ln -s / usr / bin / nodejs / usr / bin / node po tym sudo npm install -g phantomjs-prebuilt

gładko poszło

arr
źródło
2

Najlepszym sposobem na zainstalowanie nodejs jest NVM (Node Version Manager)

Usuń poprzednie wersje:

$ sudo apt-get purge node
$ sudo apt autorove

Usuń także wszystkie moduły node_ by $ sudo rm -rf node_modulesw katalogu zawierającym ten folder.

Node i Nodejs są technicznie tym samym. Zmieniło się tylko nazewnictwo.

Najpierw zainstaluj lub zaktualizuj NVM

uruchomić jako root

$ sudo su 

Następnie

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

LUB

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

Sprawdź nvm do ścieżki

$ source ~ / .profile
$ nvm ls-remote

jeśli pojawi się błąd związany z listą, zainstaluj git.

$ sudo apt-get install git

Uruchom ponownie:

$ nvm ls-remote
LUB
$ sudo nvm ls-remote

$ nvm zainstaluj wymaganą wersję 

Sprawdzanie wersji

# node --version
NVM używa wymaganej wersji

TRYBUNAŁ INFORMACYJNY:

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

CSEngineer
źródło
1

Utworzyłem dowiązanie symboliczne, ale wciąż nie działało.

Zapomniałem zrestartować terminal (moje połączenie szpachlowe). Po tym, jak działało bez dowiązania symbolicznego :)

Jamie Hutber
źródło
1

Będzie pomocny dla absolutnie początkujących

Chociaż masz odpowiedź, chciałem tylko zaznaczyć, że nodepolecenie (bez żadnych parametrów) uruchomi węzeł w trybie REPL -read-eval-print-loop , aby wykonać surowy kod javascript.

Innym sposobem użycia nodepolecenia jest podanie jspliku jako parametru. Tak najczęściej go używamy.

Mohammed Zameer
źródło
0

Usunięcie istniejącego węzła i nodejs jest opcjonalne, ale alternatywnie należy zainstalować najnowsze nodejs 7.x.

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
gino
źródło
0

Wystarczy użyć NVM (Node Version Manager) - https://github.com/creationix/nvm

Stało się standardem zarządzania Node.js.

Kiedy potrzebujesz nowej wersji:

nvm install NEW_VER
nvm use XXX

Jeśli coś pójdzie nie tak, zawsze możesz wrócić

nvm use OLD_VER
Dimitar Mazhlekov
źródło
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.
źródło