nodejs против узла в Ubuntu 12.04

310

Я установил nodejs на ubuntu из инструкций, приведенных здесь

Когда я пишу node --version в терминале, я вижу это:
-bash: /usr/sbin/node: No such file or directory

Я вижу node в каталоге /usr/sbin/.

Написание npm --version показывает 1.3.5
Написание nodejs --version показывает v0.10.15

Кроме того, я вижу node в каталоге /usr/bin/.

Итак, как я могу работать node?

Кроме того, если я использую zsh вместо bash, то работает команда node.

  • 1
    Если «вы видите узел в / usr / bin /», то что ls -l /usr/bin/node ?
  • 1
    @randunel Я получил этот вывод lrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Показать ещё 10 комментариев
Теги:
serverside-javascript

17 ответов

505
Лучший ответ

Вам нужно вручную создать символическую ссылку /usr/bin/node. Ярлык для bash совместимых оболочек:

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

Или, если вы используете нестандартные оболочки, просто скопируйте путь, который вы найдете с помощью which nodejs:

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

Позже отредактируйте

Я нашел это объяснение в опубликованной вами ссылке

Существует конфликт имен с пакетом node (программа любительского пакетного радио node), а двоичный файл nodejs был переименован из node в nodejs. Вам понадобится symlink/usr/bin/node в /usr/bin/nodejs или вы можете удалить программу Amateur Packet Radio node, чтобы избежать этого конфликта.

Позже отредактируйте

Прошло некоторое время, так как я ответил на это. Хотя решение, которое я опубликовал здесь, работало для меня несколько раз, пользователи сообщили еще несколько решений в комментариях:

От пользователя @user229115

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

Из AskUbuntu (user leftium)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
  • 0
    Хорошо! Хотя, если я использую zsh , то команда node работает.
  • 1
    Кроме того, как мне удалить программу Amateur Packet Radio Node? Я попытался sudo apt-get remove node но он говорит, что Package node is not installed, so not removed
Показать ещё 10 комментариев
82

Я думаю, что это так:

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

Использование альтернатив Debian.

  • 3
    Это, кажется, лучший вариант, чем принятый ответ, он не изменяет вручную папку / usr / bin / и использует инфраструктуру для альтернативных команд
  • 0
    Я еще не пробовал, но я посмотрел документы по update-alternative . Если это действительно работает, то это лучшее решение :)
Показать ещё 6 комментариев
53

По-видимому, решение отличается от версий Ubuntu. После работы у меня на Ubuntu 13.10:

sudo apt-get install nodejs-legacy

НТН

  • 0
    кажется, что nodejs-legacy больше не поддерживается. последняя сборка останавливается на 2013-04-10
  • 8
    nodejs-legacy не требует особого сопровождения. Он просто добавляет мягкую ссылку, похожую на sudo ln -s nodejs /usr/bin/node , по крайней мере, на LTS 14.04
Показать ещё 4 комментария
30

У меня такая же проблема в Ubuntu 14.04.

Я установил "nodejs" , и он работает, но только если я использую команду "nodejs" . Если я пытаюсь использовать "node", ничего не происходит.

Я исправил эту проблему следующим образом:

  • Установить nodejs-legacy

    sudo apt-get install nodejs-legacy

После этого, когда я набираю "node" в командной строке, я получаю сообщение об ошибке "/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 зафиксировано , что , как хорошо, но это не больше не нужны после того, как вы покинете эту оболочку.
  • 0
    Кстати, даже неправильные ответы полезны, чтобы объяснить все проблемы из-за трех пакетов, имеющих очень похожие имена: node ( /usr/sbin/node для чего-то совершенно другого), nodejs ( /usr/bin/nodejs ) и nodejs-legacy ( /usr/bin/node , зависит от пакета nodejs ).
Показать ещё 2 комментария
10

Это случилось со мной.

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

Проблема заключалась в том, что я установил node из исходного кода некоторое время назад. Выполнение

which node

всегда указывал на эту локальную установку. Кроме того,

echo NODE_PATH

указывает на локальную установку.

удаление каталога с исходной установкой не помогло. Он просто сломал команду node. В конце концов, отключить переменную окружения 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.

  • 0
    Это сработало для меня. Жаль, что я бездельничал в течение часа, прежде чем нашел его.
9

Я новичок во всем этом, но для меня работал простой псевдоним:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

по крайней мере для запуска вещей непосредственно в bash и выполнении .js файлов.

  • 0
    Спасибо @Phill! Работает отлично!
  • 0
    Работал без rlwrap . Спасибо!
Показать ещё 1 комментарий
8

Как насчет использования официальных инструкций на узле сайта:

Для 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 без предварительного запуска установки script приведет к получению node 0,10.

Если вы планируете устанавливать собственные модули npm, требующие сборки, также запускайте:

sudo apt install -y build-essential

Примечание. Это рекомендуемый путь для любого дистрибутива на основе Debian по всем архитектурам.

7

Node Менеджер версий (nvm)

Если вам нравится устанавливать несколько версий nodejs и легко переключаться между ними, я бы предложил использовать Node Version Manger. Он также решает проблему именования (node vs 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)
7

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

Если вы установите node.js, используя рекомендуемый метод из node github install readme, он предлагает следовать инструкциям nodeource статью в блоге, вместо установки из устаревшего 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 -

6

Добавление в @randunel правильного ответа (еще не могу прокомментировать SO):

Мне также пришлось символически ссылаться /usr/local/bin/ node на/usr/bin/nodejs.

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

По-видимому, это переопределяло команду /usr/bin/ node.

Не знаю, как это получилось, но надеюсь, что это поможет кому-то другому, поскольку было больно понять, почему это не работает для меня.

4

Это работает для меня:

alias node=nodejs

Следуя инструкциям в этой ссылке.

  • 0
    Самый простой способ, это решило мою проблему
3

Если вы используете экземпляр AWS EC2 с экземпляром Ubuntu (проверенный на Ubuntu 16.x), эти шаги могут работать для вас:

    sudo apt-get update
    sudo apt-get --purge remove node -y
    sudo apt-get --purge remove 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
    node -v

Если все правильно, последняя команда должна иметь выход вроде: v6.x.x

Если нет, запустите следующее:

    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 Менеджер версий)

Удалить предыдущие версии:

$ sudo apt-get purge node
$ 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 | bash

ИЛИ

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

Проверьте nvm на путь

$ source ~/.profile
$ nvm ls-remote

если вы получите сообщение об ошибке, а затем установите git.

$ sudo apt-get install git

Повторный запуск:

$ nvm ls-remote
ИЛИ
$ sudo nvm ls-remote
$ nvm install version-you-require 

Проверка версии

# node --version
nvm use version-you-require

ИНФОРМАЦИОННЫЙ КУРС:

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

Будет полезно для абсолютных новичков

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

Другим способом использования команды node является предоставление файла js в качестве параметра. Именно так мы в основном используем его.

1

Я создал символическую ссылку, но она все еще не работала.

Я забыл перезагрузить мой терминал (мое соединение шпатель). После того, как я работал без символической ссылки:)

0

Это необязательно для удаления существующих node и nodejs, но для этого необходимо установить последние 7x nodejs.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню