Не удается установить пакеты с помощью диспетчера пакетов узлов в Ubuntu
имя интерпретатора NodeJS (node) на Ubuntu был переименован в nodejs из-за конфликта имен с другого пакета. Вот что такое readme.debian говорит:
восходящее имя узла.команда интерпретатора js - это "узел".
В Debian команда интерпретатора была изменена на"nodejs".
Это было сделано для предотвращения столкновения пространства имен: другие команды используют
то же самое имя в их восходящих потоках, таких как ax25-узел из "узла"
пакет.
Скрипты вызова узла.js как команда оболочки должна быть изменена на instead
используйте команду "nodejs".
однако, используя nodejs mucks up установка пакетов с помощью 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 уже установлен в системе, но имя интерпретатора отличается?
17 ответов:
TL; DR:
sudo apt-get install nodejs-legacy
прежде всего, позвольте мне немного прояснить ситуацию. Летом 2012 года сопровождающие Debian решили переименовать узел.JS в исполняемый файл, чтобы предотвратить какой-то конфликт имен с другим пакетом. Это было очень трудное решение для технического комитета Debian, потому что это нарушает обратную совместимость.
ниже приводится цитата из проекта резолюции Комитета, опубликованного в Debian рассылки:
пакет nodejs должен быть изменен на / usr/bin /nodejs, а не/usr/bin / node. Пакет должен объявить перерывы: отношения с любые пакеты в Debian, которые ссылаются на /usr/bin / node.
исходный пакет nodejs должен также предоставлять двоичный пакет NodeJS-legacy с приоритетом: extra, который содержит/usr/bin / node в качестве символической ссылки на / usr/bin / nodejs. Ни один пакет в архиве не может зависеть или рекомендовать в nodejs-наследие пакет, который предоставляется исключительно для upstream
совместимость. Этот пакет объявляет должен также объявить конфликты: связь с пакетом узла.<...>
пункт 2 является фактическим решением проблемы ОП. ОП следует попытаться установить этот пакет, вместо того, чтобы делать симлинк вручную. Вот ссылка на этот пакет в индексе пакета Debian сайт.
Он может быть установлен с помощью
sudo apt-get install nodejs-legacy.Я не нашел никакой информации о принятии всего этого разработчиками NPM, но я думаю
npmпакет будет зафиксирован на некотором пункте иnodejs-legacyстать действительно наследие.
попробуйте связать узел с nodejs. Сначала узнайте, где nodejs
whereis nodejsзатем узел мягкой связи с nodejs
ln -s [the path of nodejs] /usr/bin/nodeЯ предполагаю, что в /usr/bin находится в вашем пути выполнения. Затем вы можете проверить, введя node или npm в свою командную строку, и все должно работать сейчас.
вы также можете установить Nodejs с помощью NVM или Менеджер Версий Nodejs много преимущества для использования менеджера версий. Одним из них является то, что вам не нужно беспокоиться об этой проблеме.
инструкции:
sudo apt-get update sudo apt-get install build-essential libssl-devпосле установки необходимых пакетов вы можете вытащить сценарий установки nvm со страницы GitHub проекта. Версия номер может быть разным, но в целом вы можете скачать и установить его со следующим синтаксисом:
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | shэто позволит загрузить скрипт и запустить его. Он установит программное обеспечение в подкаталог вашего домашнего каталога по адресу
~/.nvm. Он также добавит необходимые строки в ваш~/.profileфайл для использования файла.чтобы получить доступ к функциональности nvm, вам нужно выйти из системы и снова войти в систему, или вы можете использовать источник ~/.файл профиля так, что ваш текущий сессия знает об изменениях:
source ~/.profileтеперь, когда у вас установлен nvm, вы можете установить изолированный узел.варианты на JS.
чтобы узнать версии узла.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при установке узла.js используя nvm, исполняемый файл называется node. Вы можете увидеть версию, которая в настоящее время используется оболочкой, введя:
node -vполный учебник можно найти здесь
установить
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
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после.
вот еще один подход, который я использую, так как мне нравится n для легкого переключения между версиями узлов.
в новой системе Ubuntu сначала установите узел "system":
curl -sL https://deb.nodesource.com/setup | sudo bash -установить n модуль глобально:
npm install -g nпоскольку системный узел был установлен первым (выше), альтернативная система может использоваться для чистой точки на узел, предоставленный n. Сначала убедитесь, что система альтернатив имеет ничего для узла:
update-alternatives --remove-all nodeзатем добавьте узел, предоставленный n:
update-alternatives --install /usr/bin/node node /usr/local/bin/node 1Далее добавьте узел, предоставленный системой (тот, который был установлен с curl):
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2Теперь выберите узел, предусмотренных n С помощью интерактивного меню (выберите
/usr/local/bin/nodeиз меню, представленного следующей командой):update-alternatives --config nodeнаконец-то, так как
/usr/local/binобычно имеет более высокий приоритет в пути, чем/usr/bin, в следующий псевдоним должен быть создан (введите в свой .bashrc или .zshrc) если альтернативный системный узел должен быть эффективным; в противном случае узел установлен с n in /usr / local / bin всегда имеет приоритет:alias node='/usr/bin/node'теперь вы можете легко переключаться между версиями узлов с помощью
n <desired node version number>.
для меня проблема была решена,
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 npm@latest || sudo npm install -g npm@latest
на 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это установленный узел версии 10.37 и npm 1.4.28. После этого я мог бы установить пакеты по всему миру.
Как уже упоминали другие люди, я предлагаю не использовать "sudo apt-get" для установки узла или любой библиотеки разработки. Вы можете скачать необходимую версию сhttps://nodejs.org/dist/v6.9.2/ и настроить собственную среду.
Я буду рекомендовать такие инструменты, как nvm и n, чтобы управлять узлом. Это очень удобно переключаться и работать с этими модулями. https://github.com/creationix/nvm https://github.com/tj/n
или напишите basic 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
простое решение здесь
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -- sudo apt-get install nodejsвы можете указать версию, изменив значение setup_x.x, например setup_5.x
удалите любую версию узла у вас есть
sudo apt-get --purge remove node sudo apt-get --purge remove nodejs-legacy sudo apt-get --purge remove nodejsустановить nvm (Node Version Manager) https://github.com/creationix/nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bashтеперь вы можете установить любую версию узла, который вы хотите, и переключаться между версиями.
ваша система не может обнаружить узел пути JS binary.
1.какой узел
2.Затем узел мягкой ссылки на nodejs
ln -s [the path of nodejs] /usr/bin/nodeЯ предполагаю, что в /usr/bin находится в вашем пути выполнения. Затем вы можете проверить, введя node или npm в свою командную строку, и все должно работать сейчас.
я исправил его unlinking /usr / sbin / node (который связан с пакетом ax25-node), затем я создал ссылку на nodejs, используя это в командной строке
sudo ln -s /usr/bin/nodejs /usr/bin/nodeпотому что пакет, такой как karma, не работает с именем nodejs, однако меняет первую строку скрипта karma с узла на nodejs, но я предпочитаю решить эту проблему раз и навсегда
для меня исправление заключалось в удалении пакетов node*, а также пакетов npm.
затем новая установка как:
sudo apt-get install autoclean sudo apt-get install nodejs-legacy npm install
проблема не в установщике
замените nodejs на node или измените путь от /usr / bin / nodejs до /usr/bin / node
Это ваш узел не правильно установить, сначала нужно удалить узел, а затем снова установить. Для установки узла это может помочь вам http://array151.com/blog/nodejs-tutorial-and-set-up/
после этого вы можете легко установить пакеты. Для установки пакетов это может помочь вам
Comments