Установка NPM на Raspberry Pi (Wheezy Image)

28

Мне посчастливилось получить Raspberry Pi под елкой в ​​этом году, и я немного повеселился, играя с Node.js на устройстве. Однако Node.js гораздо интереснее, когда вы можете загружать пакеты и подключать их к своим приложениям, и именно здесь у меня возникают некоторые проблемы.

Если я пытаюсь установить NPM вместе с Node.js с помощью следующей команды:

sudo apt-get install nodejs npm

Я получаю следующую ошибку:

pi@raspberrypi ~ $ sudo apt-get install nodejs npm
Reading        package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nodejs : Breaks: npm (< 1.1.4~dfsg-2~) but 1.1.4~dfsg-1 is to be installed
 npm : Depends: node-semver but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Я довольно плохо знаком с тем, как управление пакетами работает с операционными системами Linux на основе Debian, и почти ничего не знаю о том, как сообщество node.js структурировало их конкретные пакеты. Стоит отметить, что установка node.js сама по себе работает просто отлично, и если я попытаюсь установить NPM только сам по себе, это то, что я получаю.

pi@raspberrypi ~ $ sudo apt-get install npm
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: nodejs-dev but it is not going to be installed
       Depends: node-request but it is not going to be installed
       Depends: node-mkdirp but it is not going to be installed
       Depends: node-minimatch but it is not going to be installed
       Depends: node-semver but it is not going to be installed
       Depends: node-ini but it is not going to be installed
       Depends: node-graceful-fs but it is not going to be installed
       Depends: node-abbrev but it is not going to be installed
       Depends: node-nopt but it is not going to be installed
       Depends: node-fstream but it is not going to be installed
       Depends: node-rimraf but it is not going to be installed
       Depends: node-tar but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

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

pi@raspberrypi ~ $ sudo apt-get install node-semver
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 node-semver : Depends: nodejs but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Есть указатели?

Митч Денни
источник

Ответы:

22

Попробуйте установить их все вместе:

sudo apt-get install nodejs npm node-semver
Рыбаковым
источник
32

Это лучший способ установить NodeJs на raspberry pi, мне это нравится, и я думаю, что это легко сделать, а позже для обновления просто замените папку '/ opt / nodejs' новой версией:

wget https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-armv6l.tar.gz

sudo mv node-v4.2.4-linux-armv6l.tar.gz /opt

cd /opt

sudo tar -xzf node-v4.2.4-linux-armv6l.tar.gz

sudo mv node-v4.2.4-linux-armv6l nodejs

sudo rm node-v4.2.4-linux-armv6l.tar.gz

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

sudo ln -s /opt/nodejs/bin/npm /usr/bin/npm

Обратите внимание, что есть также версия arm71 для последних версий Raspberry.

Ясин Хачлек
источник
2
Этот ответ актуален.
Уриэль
1
Пока это было лучшее решение, но я только что нашел другое, используя nvm (Node Version Manager), который также позволяет легко обновлять узел, но одновременно использовать разные версии. Они разделяют шаги символической ссылки, чтобы разрешить доступ к узлам для всех пользователей. Краткое руководство здесь: losant.com/blog/how-to-install-nodejs-on-raspberry-pi с решением, позволяющим избежать проблем с символическими ссылками : stackoverflow.com/a/29903645/3480671
bosch
NB: /usr/local/binбудет немного больше подхожу для локального администратора управляемого символических ссылок на местные админ-управляемый filedump в/opt
JamesTheAwesomeDude
у меня это сработало, реальная проблема, с которой я столкнулся, заключается в том, что NPM не поставляется с узлом, но NPM не существовал в качестве отдельного устройства, у него установлен NPM, но теперь Node не работает
Джейкоб Шнайдер
4

Adafruit предоставляет (относительно) текущий узел и npm. После того, как я не нашел компиляцию полезной, это сработало для меня с несколькими пакетами (express, body-parser, pg)

user542319
источник
2

Я запускаю raspbian jessie на pi 3. В образе предварительно установлен Node, а npm - нет . Были проблемы с установкой npm, и эта тема помогла мне получить подсказки.

Я получил ошибку

pi@raspberrypi:~ $ **sudo apt-get install nodejs npm node-semver**
Reading package lists... Done
Building dependency tree       
Reading state information... Done
nodejs is already the newest version.
nodejs set to manually installed.
The following extra packages will be installed:
  gyp libc-ares-dev libjs-node-uuid libjs-underscore libssl-dev 
  libssl-doc libv8-3.14-dev node-abbrev node-ansi node-ansi-color-table 
  node-archy node-async node-block-stream node-combined-stream 
  node-cookie-jar node-delayed-stream node-forever-agent node-form-data 
  node-fstream node-fstream-ignore node-github-url-from-git node-glob 
  node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe
  node-lockfile node-lru-cache node-mime node-minimatch
  node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data
  node-npmlog node-once node-osenv node-qs node-read node-read-package-json
  node-request node-retry node-rimraf node-sha node-sigmund node-slide 
  node-tar node-tunnel-agent node-underscore node-which nodejs-dev
Suggested packages:
  node-hawk node-aws-sign node-oauth-sign node-http-signature
The following NEW packages will be installed:
  gyp libc-ares-dev libjs-node-uuid libjs-underscore libssl-dev 
  libssl-doc libv8-3.14-dev node-abbrev node-ansi node-ansi-color-table 
  node-archy node-async node-block-stream node-combined-stream 
  node-cookie-jar node-delayed-stream node-forever-agent node-form-data   
  node-fstream node-fstream-ignore node-github-url-from-git node-glob 
  node-graceful-fs node-gyp node-inherits node-ini node-json-stringify-safe
  node-lockfile node-lru-cache node-mime node-minimatch
  node-mkdirp node-mute-stream node-node-uuid node-nopt node-normalize-package-data
  node-npmlog node-once node-osenv node-qs node-read node-read-package-json
  node-request node-retry node-rimraf node-semver node-sha node-sigmund 
  node-slide node-tar node-tunnel-agent node-underscore node-which  
  nodejs-dev npm
0 upgraded, 55 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,222 kB/3,708 kB of archives.
After this operation, 13.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
**Err http://mirrordirector.raspbian.org/raspbian/ jessie/main libssl-dev armhf 1.0.1k-3+deb8u2
  404  Not Found [IP: 5.153.225.207 80]
Err http://mirrordirector.raspbian.org/raspbian/ jessie/main libssl-doc all 1.0.1k-3+deb8u2
  404  Not Found [IP: 5.153.225.207 80]
E: Failed to fetch 
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?**
pi@raspberrypi:~ $ 

Следующие 2 команды в последовательности помогли мне

sudo apt-get update
sudo apt-get install npm
Кришнан V
источник
3
Не могли бы вы отредактировать ваше сообщение, чтобы сделать его более читабельным. Стена текста действительно необходима?
Ганима
2

Я считаю, что самый простой способ получить NPM (и последнюю версию Node.js) на любом Raspberry PI (от нуля до 3) - это использовать «NVM» ( Node Version Manager ).

Чтобы установить NVM:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.6/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

После установки вы можете в любое время загрузить последнюю версию Node.js следующим образом:

nvm install node

Выполнено!

Убедитесь, что NPM установлен:

npm --version
Wireblue
источник
Это хорошо сработало для меня на моем pi 3b +, первое решение установило npm 1.6 и продолжало работать с ошибками при установке пакетов. NVM получил все правильно и работает.
sirclesam
1

Если у вас возникают проблемы с бинарными пакетами, я бы порекомендовал вам скомпилировать их самостоятельно. Таким образом, вы получите лучшее представление о том, что происходит с ошибкой / бинарные пакеты могут быть для другого типа процессора (не ARM).

Я предлагаю проверить https://gist.github.com/3301813 инструкции по компиляции Raspberry Pi NodeJS.


источник
Спасибо Бен. Я сталкивался с этой статьей раньше. Я предполагал, что NPM может быть отделен от исходного дерева Node.js?
NPM - это отдельный источник github.com/isaacs/npm, однако последние версии для nodejs обычно поставляются в комплекте с npm.
1

Как отметил Бен, я бы посоветовал скомпилировать Node.js самостоятельно на Raspberry Pi. Начиная с версии 0.8.10 (или около того) это возможно без лишних слов. Просто

$ ./configure
$ make
$ sudo make install

вот и все. Тогда Node.js будет установлен в том числе npm.

Работает как шарм :-)!

Голо Роден
источник
Спасибо, Голо. Minitech дал ответ, который работал лучше для меня. Raspberry Pi работает довольно медленно, поэтому я думаю, что сборка, а затем установка будет более болезненной.
1
Пожалуйста, посмотрите на версию Node.js, устанавливаемую с использованием apt-get, а затем сравните эту версию с текущей версией Node.js, и вы поймете, почему я не предлагал использовать apt-get... ;-)
Golo Roden
Я сделал несколько предварительно скомпилированных tar-архивов, которые можно использовать на Raspberry Pi, если вы действительно не хотите ждать компиляции исходного кода. gist.github.com/3245130
Адам М.В.
1

Все, что вы делаете, это введите

pi@raspberrypi ~ $ sudo apt-get install nodejs npm node-semver 

Он работал для меня, и я смог установить его без ошибок, и он должен работать с программой!

RaspberryPiScientist
источник
1
Пожалуйста, будьте более точны: какую версию узла вы установили таким образом, каков был источник пакета (вы добавили новую?), На какую ОС вы устанавливали, какая у вас версия rPi, какая у нее арка узла ( armv6, v7). Ваш ответ может решить что-то, но мы не знаем, что так никто не будет использовать.
Bosch
0

Попробуйте подписаться на этот пост . Мне удается запустить npm в / opt / node / npm, но когда я копирую его в / usr / bin /, он пропускает 'npmlog'.

Виниций Сенна
источник
Рекомендуется, чтобы вы копировали шаги в ответ, приписывая свой источник дополнительной информации, в случае, если исходный сайт закрывается, страница удаляется или перемещается и т. Д. По крайней мере, краткое изложение общих шагов процесса.
Tevo D