nodejs vs node на ubuntu 12.04


363

Я встановив nodejs на ubuntu з наведених тут інструкцій

Коли я пишу node --versionв терміналі, я бачу таке:
-bash: /usr/sbin/node: No such file or directory

Я можу бачити вузол у /usr/sbin/каталозі.

Написання npm --versionшоу 1.3.5
Письмові nodejs --versionшоуv0.10.15

Також я можу побачити вузол у /usr/bin/каталозі.

Отже, як мені nodeпрацювати?

Крім того, якщо я використовую zsh замість bash, тоді nodeкоманда працює.


1
Якщо "ви бачите вузол у / usr / bin /", то який результат ls -l /usr/bin/node?
randunel

1
@randunel Я отримав цей вихідlrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Джатін

Ви внесли якісь зміни в оболонку rc?
randunel

Це виглядає як проблема з оболонкою після редагування, що видає, export | grep PATHколи не використовується zsh? (він має друкувати /usr/binсеред іншого)
randunel

1
Рішення + пояснення: stackoverflow.com/questions/21168141 / ...
throbi

Відповіді:


599

Вам потрібно вручну створити симпосилання /usr/bin/node. Ярлик для оболонок, сумісних з башем:

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

Або якщо ви використовуєте нестандартні оболонки, просто введіть жорсткий код шляху, який ви знайдете which nodejs:

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

Пізніше відредагуйте

Я знайшов це пояснення у посиланні, яке ви опублікували

Виникає конфлікт імен з пакетом вузлів (Amateur Packet Radio Node Program), і двійковий код nodejs був перейменований з вузла на nodejs. Вам потрібно буде символізувати / usr / bin / node / usr / bin / nodejs, або ви можете видалити програму радіовузла Amateur Packet Radio, щоб уникнути конфлікту.

Пізніше відредагуйте

Минув час, як я відповів на це. Хоча рішення, яке я розмістив тут, працювало для мене кілька разів, користувачі повідомили про ще кілька рішень у коментарях:

Від @ user229115

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

Від AskUbuntu (користувач leftium)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

добре! Хоча, якщо я використовую zsh, то nodeкоманда працює.
Ятін

1
Крім того, як видалити програму радіовузла Amateur Packet? Я спробував, sudo apt-get remove nodeале це говоритьPackage node is not installed, so not removed
Джатін

Не потрібно видаляти його, після ваших коментарів це виглядає як проблема оболонки, а не проблема пакету вузлів.
randunel

@ відповідь randunel не працював для мене, як /usr/bin/env nodeі не працював. @ Рішення BennyMcBenBen справді спрацювало
francoisrv

2
@ Тін відповідь є правильною, дивіться nodejs-legacyопис пакета. Відповідь, пов’язана з @BennyMcBenBen, також була оновлена ​​подібними інструкціями.
трикасс

88

Я думаю, це все:

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

Використання альтернатив Debian.


3
Це здається кращим варіантом, ніж прийнята відповідь, вона не вручну змінює папку / usr / bin / і використовує інфраструктуру на альтернативні команди
Домінік Фретц,

Не пробував, але я переглянув update-alternativeдокументи. Якщо це дійсно спрацює, то це краще рішення :)
randunel

3
Ви можете бути більш конкретними щодо того, що це робить?
bcorso

@DominikFretz мех. Кінцевий результат точно такий же, використовуючи специфічну для Debian команду проти POSIX-сумісної. (Ви могли б зробити update-alternatives --install /usr/local/bin/fribjazt node /usr/bin/nodejs 10.) Кожен свій, але я віддаю перевагу рівнині ln.
якийro

2
Мені довелося source ~/.bashrcце вступити в силу
iNulty

64

Мабуть, рішення відрізняється між версіями Ubuntu. Слідом працював для мене на Ubuntu 13.10:

sudo apt-get install nodejs-legacy

HTH

Редагувати: Правило великого пальця:

Якщо ви встановили, nodejsале /usr/bin/nodeдвійковий файл відсутній , то також встановіть nodejs-legacy. Це просто створює відсутній софтпосилання.

Згідно з моїми тестами, Ubuntu 17.10 і новіші версії вже мають встановлене програмне забезпечення сумісності /usr/bin/nodeпісля nodejsвстановлення, тому nodejs-legacyвін відсутній у цих випусках, оскільки він більше не потрібен.


здається, що спадщина nodejs вже не підтримується. Останнє будівництво зупиняється в 2013-04-10
francoisrv

8
nodejs-legacyне потребує значного обслуговування. Це просто додає програмне посилання, схоже на sudo ln -s nodejs /usr/bin/node, принаймні, на LTS 14.04
Тіно

4
На Ubuntu 14.04 nodejs та nodejs-legacy встановлюють ту саму версію Node (0.10.25). +1 до @Tino.
Марк Е. Хааз

Для мене працює і в Дебіана Джессі. Це має бути прийнятою відповіддю, оскільки саме так мають бути зроблені речі. Тільки люди, які використовують радіоаматорський пакет, не повинні цього робити. Мені цікаво, чому вони не перейменували радіопакет, як це зробили з хромом-bsu.
Jérôme

Це призведе до двох примірників вузла у вашій системі, і це більше не підтримується ... Рекомендую замість цього посилання на nodejs.
PodTech.io

30

У мене ж випуск у Ubuntu 14.04.

Я встановив "nodejs", і він працює, але тільки якщо я використовую команду "nodejs". Якщо я спробую використовувати «вузол», нічого не вийде.

Я вирішую цю проблему наступним чином:

  1. Встановіть nodejs-legacy

    sudo apt-get install nodejs-legacy

Після цього, коли я ввожу "вузол" у командному рядку, я отримую повідомлення про помилку "/ usr / sbin / node: Немає такого файлу чи каталогу"

  1. По-друге, що я зробив, це символічне посилання на "nodejs":

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

4
У вашій системі є щось дивне. nodeповинен бути встановлений, /usr/bin/а не /usr/sbin/. Це виглядає для мене , як якщо б ви встановили Ubuntu nodeпакет з радіоаматорів раніше (див packages.ubuntu.com/trusty/all/node/filelist ) і забули запустити hash -rна рівні оболонки, так що оболонка до сих пір пам'ятає неправильний шлях. Другий lnце також зафіксував, але він більше не потрібен після того, як ви залишите цю оболонку.
Тіно

До речі, навіть неправильні відповіді добре пояснити всю проблему через три пакунки, які мають дуже схожі назви: node( /usr/sbin/nodeдля чогось зовсім іншого), nodejs( /usr/bin/nodejs) і nodejs-legacy( /usr/bin/node, залежить від пакета nodejs).
Тіно

Це сталося і зі мною. Я встановив вузол від джерела деякий час тому. node -v => 0.10.2поки nodejs -v => 5.5.0. Запуск команди which nodeзавжди вказував на цю локальну установку. Зрештою, мені довелося unset NODE_PATH, що вказав на локальну установку, щоб виправити це. Після цього node -v => 5.5.0і npm install почав працювати для пакетів залежно від Node => 5.0.
CHsurfer

11

Це сталося і зі мною.

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

Проблема полягала в тому, що я встановив вузол від джерела деякий час тому. Біг

which node

завжди вказував на цю локальну установку. Також,

echo NODE_PATH

вказав на місцеву установку.

видалення каталогу з джерелом установки не допомогло. Це просто порушило команду вузла. Врешті-решт, скасування змінної середовища NODE_PATH та очищення, а потім перевстановлення nodejs зробили свою справу.

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

Після цього,

node -v => 5.5.0

і npm install почали працювати для пакетів залежно від Node => 5.0.


Це працювало для мене. Шкода, що я заплутався за годину до того, як знайти.
Дастін Фракер

11

Менеджер версій вузла (nvm)

Якщо ви хочете встановити кілька версій nodejs і легко перемикатися між ними, я б запропонував скористатись Node Version Manger . Він також вирішує задачу іменування ( nodevs nodejs)

Це досить просто:

Встановіть версію nodejs:

$ nvm install 4.4

Тепер у вас є nodejs 4.4 на додаток до вже встановленої версії, і ви можете просто скористатися nodeкомандою, щоб дійти до нещодавно встановленої версії:

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

Ви можете встановити більше версій nodejs та легко переходити між ними:

$ 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
Це вирішило мою проблему, велике спасибі, я знайшов корисну команду nvmщодо того, як встановити Node.js на сервер Ubuntu 14.04
Хью Нгуен

1
це працювало для мене. Також довідник доступний тут: digitalocean.com/community/tutorials/…
Коен Корнеліс

10

Я новачок у всьому цьому, але для мене простий псевдонім спрацював:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

принаймні для запуску речей безпосередньо в bash та виконання файлів .js.


Працювали без rlwrap. Дякую!
Шурик

Дякую @Phill, ти приголомшливий!
Юріл Герліан Сія

9

Як щодо використання офіційних інструкцій з сайту nodejs :

Для v7:

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

Для v6:

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

Для v4:

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

Я тестував їх у Windows bash (через підсистему для Linux - 14.04) та raspbian (на базі ARM Debian). Бігsudo apt-get install -y nodejs без попереднього запуску сценарію настройки призведе до отримання вузла 0.10.

Якщо ви плануєте встановити нативні npm-модулі, які потребують збірки, також запустіть:

sudo apt install -y build-essential

Примітка: це рекомендований шлях для будь-якого дистрибутива на основі Debian у всіх архітектурах.


7

Додавання правильної відповіді @ randunel (поки що не можна коментувати SO):

Я також повинен був символізувати / usr / local / bin / node до / usr / bin / nodejs.

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

Мабуть, це було перекриттям команди / usr / bin / node.

Не маю уявлення, як це було встановлено, але сподіваюся, що це допоможе комусь іншому, оскільки це було болем зрозуміти, чому вищезгадане не працює для мене.


7

Пізня відповідь, але для актуальної інформації ...

Якщо ви встановлюєте node.js за допомогою рекомендованого методу з readme установки nithource github , він пропонує виконувати вказівки в статті блогу nodesource , а не встановлювати застарілу apt-get repo, node.js слід запускати за допомогою nodeкоманди, а також nodejsкоманда, без необхідності робити нове символьне посилання.

Цей метод із статті:

# 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

Зауважте, що це стосується версії v0.12, яка, швидше за все, застаріє в недалекому майбутньому.

Крім того, якщо ви стоїте за корпоративним проксі (як я), ви хочете додати параметр -E до команди sudo, щоб зберегти env vars, необхідні для проксі:

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



4

Якщо у вас є екземпляр AWS EC2 із запуском екземпляра Ubuntu (тестований на Ubuntu 16.x), то ці кроки можуть працювати для вас:

    sudo apt-get update
    sudo apt-get --purge видалити вузол -y
    sudo apt-get --purge видалити nodejs -y
    sudo apt-get --purge видалити спадщину-вузол -y
    sudo rm / usr / bin / node
    curl -sL https://deb.nodesource.com/setup_6.x | судо баш -
    sudo apt-get install nodejs -y
    вузол -v

Якщо все правильно, остання команда повинна мати вихід: v6.xx

Якщо ні, то запустіть наступне:

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

Сподіваємось, це допоможе. Це мені допомогло магічно (хе-хе).


3

У мене було те саме символьне посилання, яке допомогло мені вийти: sudo ln -s / usr / bin / nodejs / usr / bin / node після цього sudo npm install -g phantomjs-prebuilt

пройшов гладко


2

Найкращий спосіб встановити nodejs - через NVM (Node Version Manager)

Видалити попередні версії:

$ sudo apt - отримати вузол очищення
$ sudo apt autoremove

Також видаліть усі node_modules $ sudo rm -rf node_modulesв каталозі, що містить цю папку.

Технічно Node & Nodejs - це одне і те ж. Просто названня змінилося.

Спочатку встановіть або оновіть nvm

запускати як root

$ sudo su 

Тоді

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

АБО

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

Перевірте nvm на шлях

$ source ~ / .profile
$ nvm ls-віддалений

якщо ви отримаєте помилку щодо лістингу, то встановіть git.

$ sudo apt-get install git

Повторно запустіть:

$ nvm ls-віддалений
АБО
$ sudo nvm ls-віддалений

$ nvm встановіть потрібну вам версію 

Перевірка версії

# вузол --вернення
nvm використовуйте потрібну вам версію

ІНФОРМАЦІЙНА КУРТЕСІЯ:

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


1

Я створив симпосилання, але воно все ще не працювало.

Я забув перезапустити свій термінал (моє з'єднання шпаклівки). Після того, як у мене це працювало без символьної посилання :)


1

Буде корисно для абсолютних новачків

Хоча, ви отримали відповідь, просто хотіли зазначити, що nodeкоманда (без будь-яких параметрів) запустить вузол у режимі REPL read-eval-print-loop для виконання необробленого коду JavaScript.

Ще один спосіб використання nodeкоманди - це надання jsфайлу в якості параметра. Саме так ми в основному цим і користуємось.


0

Необов’язково видаляти існуючий вузол та nodejs, але потрібно альтернативно встановити останній 7.x nodejs.

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

0

Просто використовуйте NVM (Node Version Manager) - https://github.com/creationix/nvm

Це стало стандартом для управління Node.js.

Коли вам потрібна нова версія:

nvm install NEW_VER
nvm use XXX

Якщо щось піде не так, ви завжди можете повернутися

nvm use OLD_VER


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.