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.


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

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.


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.


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

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.


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)

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.


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.


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.


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 -



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).


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


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


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 :)


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.


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



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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.