Невозможно установить пакеты с помощью диспетчера пакетов node в Ubuntu
Имя интерпретатора NodeJS (node
) на Ubuntu было переименовано в nodejs
из-за конфликта имен с другим пакетом. Вот что говорит readme.debian:
Имя восходящего потока для команды интерпретатора Node.js: "node". В Debian команда интерпретатора была изменена на "nodejs".
Это было сделано для предотвращения столкновения пространства имен: использование других команд то же имя в их восходящих потоках, например ax25- node, из "node" пакет.
Сценарии, вызывающие Node.js как команду оболочки, должны быть изменены вместо используйте команду "nodejs".
Однако, используя nodejs, mucks пытается установить пакеты с помощью npm
. Установка пакета завершается с ошибкой:
sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian
Как заставить npm понять, что nodejs уже установлен в системе, но имя интерпретатора отличается?
Ответы
Ответ 1
TL; ДР:
sudo apt-get install nodejs-legacy
Прежде всего, позвольте мне немного уточнить ситуацию. Летом 2012 года разработчики Debian решили переименовать исполняемый файл Node.js для предотвращения столкновения пространства имен с другим пакетом. Это было очень сложное решение для Технического комитета Debian, поскольку оно нарушает обратную совместимость.
Ниже приводится цитата из проекта резолюции Комитета, опубликованная в Debian список рассылки:
-
Пакет nodejs должен быть изменен для предоставления /usr/bin/nodejs, а не /usr/bin/ node. Пакет должен объявить связь Breaks: любые пакеты в Debian, ссылающиеся на /usr/bin/ node.
-
Исходный пакет nodejs также должен предоставить двоичный пакет nodejs-legacy в Priority: extra, который содержит /usr/bin/ node как символическую ссылку на /USR/ бен/nodejs. Пакет в архиве не может зависеть от или рекомендовать пакет nodejs-legacy, который предоставляется исключительно для восходящего потока совместимость. В этом объявлении объявляется конфликт: отношения с пакетом node.
<... >
Пункт 2 является фактическим решением проблемы ОП. OP должен попытаться установить этот пакет вместо того, чтобы делать симлинк вручную. Вот ссылка на этот пакет в индексе пакета Debian веб-сайт.
Он может быть установлен с помощью sudo apt-get install nodejs-legacy
.
Я не нашел никакой информации о принятии всего этого разработчиками NPM, но я думаю, что пакет npm
будет исправлен в какой-то момент, а nodejs-legacy
станет действительно устаревшим.
Ответ 2
Попробуйте привязать node к nodejs. Сначала выясните, где nodejs
whereis nodejs
Затем мягкая ссылка node на nodejs
ln -s [the path of nodejs] /usr/bin/node
Я предполагаю, что /usr/bin находится в вашем пути выполнения. Затем вы можете протестировать, введя node или npm в свою командную строку, и теперь все должно работать.
Ответ 3
Вы также можете установить Nodejs, используя NVM или Nodejs Version Manager. Существует много преимуществ для использования версии менеджер. Один из них - вам не нужно беспокоиться об этой проблеме.
Инструкция:
sudo apt-get update
sudo apt-get install build-essential libssl-dev
После установки пакетов необходимых условий вы можете отключить установку nvm script на странице проекта GitHub. Номер версии может отличаться, но в целом вы можете загрузить и установить его со следующим синтаксисом:
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh
Это загрузит script и запустит его. Он установит программное обеспечение в подкаталог вашего домашнего каталога в ~/.nvm
. Он также добавит необходимые строки в ваш файл ~/.profile
для использования файла.
Чтобы получить доступ к функциям nvm, вам нужно будет снова выйти и снова войти в систему, или вы можете указать файл ~/.profile, чтобы ваш текущий сеанс знал об изменениях:
source ~/.profile
Теперь, когда вы установили nvm, вы можете установить изолированные версии Node.js.
Чтобы узнать версии Node.js, доступные для установки, вы можете ввести:
nvm ls-remote
. . .
v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14
Как вы можете видеть, самая новая версия на момент написания этой статьи - v0.11.14. Вы можете установить это, набрав:
nvm install 0.11.14
Обычно nvm переключается на использование последней установленной версии. Вы можете явно указать nvm на использование только что загруженной версии, набрав:
nvm use 0.11.14
При установке Node.js с использованием nvm исполняемый файл вызывается Node. Вы можете увидеть версию, которая в настоящее время используется оболочкой, набрав:
node -v
Учебник по кассете можно найти здесь
Ответ 4
-
Установите nvm
, используя сначала:
curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
-
Запустить команду
source ~/.profile
-
Теперь запустите это, и на нем будут показаны все установленные или другие версии пакетов:
nvm ls-remote
-
Установленные пакеты будут зелеными. Установите любую версию, которая вам нужна:
nvm install 6.0.0
-
Проверьте, где не установлен:
which node
-
Проверить текущую версию:
node -v
n=$(which node);
n=${n%/bin/node};
chmod -R 755 $n/bin/*;
sudo cp -r $n/{bin,lib,share} /usr/local
Ответ 5
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs-legacy
source ~/.profile
Совмещенный принятый ответ с source ~/.profile
из комментария, который был сложен, и некоторых команд очистки до этого. Скорее всего, вам также понадобится sudo apt-get install npm
после.
Ответ 6
Вот еще один подход, который я использую, поскольку мне нравится n для удобного переключения между версиями node.
В новой системе Ubuntu сначала установите "system" node:
curl -sL https://deb.nodesource.com/setup | sudo bash -
Затем установите n-модуль по всему миру:
npm install -g n
Так как система node была установлена первой (см. выше), альтернативная система может быть использована для чистой точки на node, предоставляемой n. Сначала убедитесь, что система альтернатив ничего не имеет для node:
update-alternatives --remove-all node
Затем добавьте node, предоставленный n:
update-alternatives --install /usr/bin/node node /usr/local/bin/node 1
Далее добавьте node, предоставляемый системой (тот, который был установлен с завитком):
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2
Теперь выберите node, предоставленный n, используя интерактивное меню (выберите /usr/local/bin/node
в меню, представленном следующей командой):
update-alternatives --config node
Наконец, поскольку /usr/local/bin
обычно имеет более высокий приоритет в PATH, чем /usr/bin
, должен быть создан следующий псевдоним (введите в ваш .bashrc или .zshrc), если система альтернатив node должна быть эффективной; в противном случае node, установленный с n в /usr/local/bin, всегда имеет приоритет:
alias node='/usr/bin/node'
Теперь вы можете легко переключаться между версиями node с помощью n <desired node version number>
.
Ответ 7
В Linux Mint 17 я пробовал оба решения (создание символической ссылки или с помощью пакета nodejs-legacy
) без успеха.
Единственное, что окончательно сработало для меня, было использование ppa от Криса Ли:
sudo apt-get purge node-*
sudo apt-get autoremove
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
Установлена node версия 10.37 и npm 1.4.28. После этого я смогу установить пакеты по всему миру.
Ответ 8
Как уже упоминают другие люди, я предлагаю не использовать "sudo apt-get" для установки node или любой библиотеки разработки. Вы можете загрузить требуемую версию из https://nodejs.org/dist/v6.9.2/ и настроить собственную среду.
Я порекомендую такие инструменты, как nvm и n, чтобы управлять версией node. Очень удобно переключаться и работать с этими модулями.
https://github.com/creationix/nvm
https://github.com/tj/n
Или напишите базовый bash, чтобы загрузить zip/tar, извлечь папку перемещения и создать мягкую ссылку. Всякий раз, когда вам нужно обновить, просто укажите старую софт-ссылку на новую загруженную версию.
Как я создал для себя, вы можете обратиться:
https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh
#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2
Ответ 9
для меня проблема была решена,
sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g [email protected] || sudo npm install -g [email protected]
Ответ 10
Простое решение от здесь
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash --
sudo apt-get install nodejs
Вы можете указать версию, изменив значение setup_x.x, например, setup_5.x
Ответ 11
Удалите все node версии, которые у вас есть
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs
установить nvm (Node Менеджер версий) https://github.com/creationix/nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
Теперь вы можете установить любую версию node и переключиться между версиями.
Ответ 12
Ваша система не распознает путь node js binary.
1.which node
2. Затем софт-ссылку node на nodejs
ln -s [the path of nodejs] /usr/bin/node
Я предполагаю, что /usr/bin находится в вашем пути выполнения. Затем вы можете протестировать, введя node или npm в свою командную строку, и теперь все должно работать.
Ответ 13
Я установил его неявным /usr/sbin/ node (который связан с пакетом ax25- node), тогда я создал ссылку на nodejs, используя это в командной строке
sudo ln -s /usr/bin/nodejs /usr/bin/node
Поскольку пакет, такой как карма, не работает с именем nodejs, но меняя первую строку кармы script с node на nodejs, но я предпочитаю решить эту проблему раз и навсегда
Ответ 14
Для меня исправление удаляло пакеты node *, а также пакеты npm.
Затем новая установка:
sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install
Ответ 15
вы можете создать ссылку ln -s nodejs
node в /usr/bin
надеюсь, что это решает вашу проблему.
Ответ 16
Проблема не в установщике
замените nodejs на node или измените путь из /usr/bin/nodejs на/usr/bin/node
Ответ 17
Вы можете установить nodejs в свой Ubuntu Os, следуя этим
sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install build-essential
Ответ 18
Это ваш node неправильно установлен, сначала вам нужно удалить node, а затем снова установить.
Чтобы установить node, это может помочь вам
http://array151.com/blog/nodejs-tutorial-and-set-up/
после этого вы можете легко установить пакеты. Чтобы установить пакеты, это может помочь вам
http://array151.com/blog/npm-node-package-manager/