Instalowanie NPM na Raspberry Pi (Wheezy Image)

28

Miałem szczęście, że w tym roku udało mi się zdobyć Raspberry Pi pod drzewem i świetnie się bawiłem grając w Node.js na urządzeniu. Jednak Node.js jest o wiele bardziej interesujący, gdy możesz pobrać pakiety i podłączyć je do swoich aplikacji - i tutaj mam pewne problemy.

Jeśli spróbuję zainstalować NPM wraz z Node.js za pomocą następującego polecenia:

sudo apt-get install nodejs npm

Otrzymuję następujący błąd:

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.

Jestem całkiem nowy, jak działa zarządzanie pakietami w systemach operacyjnych Linux opartych na Debianie i nie wiem zbyt wiele o tym, jak społeczność node.js zorganizowała swoje konkretne pakiety. Warto zauważyć, że sama instalacja node.js działa dobrze, a jeśli spróbuję zainstalować NPM sama, otrzymam to.

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.

Nie jestem pewien, ale moje wnętrzności mówią mi, że to ma coś wspólnego z node-semverpaczką. Jeśli sam zainstaluję nodejspakiet, a następnie spróbuję go zainstalować node-semver, otrzymam wynik.

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.

Jakieś wskazówki?

Mitch Denny
źródło

Odpowiedzi:

22

Spróbuj zainstalować je wszystkie razem:

sudo apt-get install nodejs npm node-semver
Ry-
źródło
32

To najlepszy sposób na zainstalowanie NodeJ na Raspberry Pi, uwielbiam ten sposób i myślę, że jest to łatwe, a później do aktualizacji wystarczy zastąpić folder „/ opt / nodejs” nową wersją:

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

Zauważ, że istnieje również wersja arm71 dla ostatnich wersji Raspberry.

Yassine Khachlek
źródło
2
Ta odpowiedź jest aktualna.
Uriel
1
To było jak dotąd najlepsze rozwiązanie, ale właśnie znalazłem inne, używając nvm (Node Version Manager), który pozwala również na łatwą aktualizację węzła, ale także na używanie różnych wersji w tym samym czasie. Dzielą kroki dowiązania symbolicznego, aby umożliwić dostęp do węzła wszystkim użytkownikom. Krótki tutorial tutaj losant.com/blog/how-to-install-nodejs-on-raspberry-pi z rozwiązaniem pozwalającym uniknąć problemów z dowiązaniem symbolicznym: stackoverflow.com/a/29903645/3480671
bosch
Uwaga: /usr/local/binbyłoby nieco bardziej odpowiednie dla dowiązań symbolicznych zarządzanych przez lokalnego administratora do pliku zarządzanego przez lokalnego administratora w/opt
JamesTheAwesomeDude
zadziałało dla mnie, faktyczny problem, jaki miałem, to to, że NPM nie był dostarczany z węzłem, ale NPM nie istniał jako samodzielny, to zainstalowało NPM, ale teraz Węzeł nie działa
Jacob Schneider
4

Adafruit zapewnia (względnie) aktualny węzeł i npm. Po tym, jak kompilacja nie była pomocna, działało to dla mnie z wieloma pakietami (express, body-parser, pg)

użytkownik542319
źródło
2

Używam raspbian jessie na pi 3. Węzeł jest fabrycznie zainstalowany na obrazie, ale npm nie . Miałem problemy z instalacją npm i ten wątek pomógł mi zdobyć wskazówki.

Wystąpił błąd

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:~ $ 

Pomogły mi poniższe 2 polecenia po kolei

sudo apt-get update
sudo apt-get install npm
Krishnan V.
źródło
3
Czy możesz edytować swój post, aby był bardziej czytelny. Czy ściana tekstu jest naprawdę konieczna?
Ghanima
2

Uważam, że najłatwiejszym sposobem uzyskania NPM (i najnowszej wersji Node.js) na dowolnym Raspberry PI (od zera do 3) jest użycie „NVM” ( Node Version Manager ).

Aby zainstalować 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

Po zainstalowaniu możesz w każdej chwili pobrać najnowszą wersję Node.js:

nvm install node

Gotowy!

Sprawdź, czy zainstalowano NPM:

npm --version
Wireblue
źródło
Działa to dla mnie dobrze na moim pi 3b + pierwsze rozwiązanie zainstalowało npm 1.6 i ciągle napotykało błędy podczas instalowania pakietów. NVM działa poprawnie.
sirclesam
1

Jeśli masz problemy z pakietami binarnymi, polecam skompilować go samodzielnie, w ten sposób uzyskasz lepszy pomysł, gdy coś zawiedzie / pakiety binarne mogą być dla innego rodzaju procesora (nie ARM).

Sugeruję sprawdzenie https://gist.github.com/3301813 instrukcji kompilacji Raspberry Pi NodeJS.


źródło
Dzięki Ben. Zetknąłem się wcześniej z tym artykułem. Zakładałem, że NPM może być oddzielny od drzewa źródeł Node.js?
NPM jest oddzielny na stronie źródłowej github.com/isaacs/npm, jednak najnowsze wersje dla nodejs zazwyczaj zawierają pakiet npm.
1

Jak zauważył Ben, sugerowałbym samodzielne skompilowanie Node.js na Raspberry Pi. Od wersji 0.8.10 (lub więcej) jest to możliwe bez zbędnych ceregieli. Po prostu

$ ./configure
$ make
$ sudo make install

i to wszystko. Następnie Node.js zostanie zainstalowany, w tym npm.

Działa jak urok :-)!

Golo Roden
źródło
Dzięki Golo. Minitech udzielił odpowiedzi, która działała dla mnie lepiej. Raspberry Pi jest dość powolny, więc pomyślałem, że budowanie, a następnie instalowanie byłoby nieco bardziej bolesne.
1
Proszę spojrzeć na wersję Node.js instalowaną przy użyciu apt-get, a następnie porównać tę wersję z bieżącą wersją Node.js, a dowiesz się, dlaczego nie sugerowałem użycia apt-get... ;-)
Golo Roden
Zrobiłem kilka wstępnie skompilowanych archiwów, których można użyć na Raspberry Pi, jeśli tak naprawdę nie chcesz czekać na kompilację źródła. gist.github.com/3245130
Adam MW
1

Wystarczy wpisać

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

To działało dla mnie i byłem w stanie zainstalować go bez błędów i powinien działać z programem!

RaspberryPiScientist
źródło
1
Mówiąc dokładniej: jaką wersję węzła zainstalowałeś w ten sposób, jakie było źródło pakietu (dodałeś nowy?), W jakim systemie operacyjnym zainstalowałeś, jaką masz wersję rPi, jaki jest łuk węzła ( armv6, v7). Odpowiedź może rozwiązać problem, ale nie wiemy, co więc nikt z niego nie skorzysta.
bosch
0

Spróbuj śledzić ten post . Udaje mi się uruchomić npm na / opt / node / npm, ale po skopiowaniu go do / usr / bin / brakuje mi 'npmlog'.

Winicjusz Senna
źródło
Zaleca się, aby skopiować kroki do odpowiedzi, jednocześnie przypisując swojemu źródłu dodatkowe informacje, na wypadek awarii strony źródłowej, usunięcia lub przeniesienia strony itp. Przynajmniej podsumowanie ogólnych obrysów procesu.
Tevo D