Installazione di NPM su Raspberry Pi (Wheezy Image)


28

Ho avuto la fortuna di avere un Raspberry Pi sotto l'albero quest'anno e mi sono divertito un po 'a giocare con Node.js sul dispositivo. Tuttavia, Node.js è molto più interessante quando puoi scaricare i pacchetti e collegarli alle tue applicazioni - ed è qui che ho qualche problema.

Se provo a installare NPM insieme a Node.js con il seguente comando:

sudo apt-get install nodejs npm

Ottengo il seguente errore:

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.

Sono abbastanza nuovo su come funziona la gestione dei pacchetti con i sistemi operativi Linux basati su Debian e non so molto su come la comunità node.js ha strutturato i loro pacchetti specifici. Vale la pena notare che l'installazione di node.js da sola funziona bene, e se provo a installare NPM da solo questo è quello che ottengo.

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.

Non ne sono sicuro, ma il mio istinto mi sta dicendo che ha a che fare con il node-semverpacchetto. Se installo il nodejspacchetto da solo e quindi node-semverprovo a installare questo è l'output che ottengo.

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.

Qualche puntatore?

Risposte:


22

Prova a installarli tutti insieme:

sudo apt-get install nodejs npm node-semver

32

Questo è il modo migliore per installare NodeJs su raspberry pi, lo adoro e penso che sia facile da fare, e in seguito per l'aggiornamento basta sostituire la cartella '/ opt / nodejs' con la nuova versione:

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

Nota che esiste anche una versione arm71 per le ultime versioni di Raspberry.


2
Questa risposta è aggiornata.
Uriel,

1
Questa è stata la soluzione migliore finora, ma ne ho appena trovata un'altra, utilizzando nvm (Node Version Manager) che consente anche di aggiornare facilmente il nodo ma anche di utilizzare versioni diverse allo stesso tempo. Condividono i passaggi del collegamento simbolico per consentire l'accesso al nodo per tutti gli utenti. Un breve tutorial qui losant.com/blog/how-to-install-nodejs-on-raspberry-pi con una soluzione per evitare i problemi del collegamento simbolico: stackoverflow.com/a/29903645/3480671
bosch

NB: /usr/local/binsarebbe leggermente più appropriato per i collegamenti simbolici gestiti dall'amministratore locale ad un file archiviato gestito dall'amministratore locale in/opt
JamesTheAwesomeDude

ha funzionato per me, il vero problema che stavo riscontrando è che l'NPM non veniva fornito con il nodo, ma l'NPM non esisteva da solo, questo aveva installato l'NPM, ma ora il nodo non funziona
Jacob Schneider,

4

Adafruit fornisce un nodo (relativamente) corrente e npm. Dopo aver trovato utile una compilazione, questo ha funzionato per me con un numero di pacchetti (express, body-parser, pg)


2

Corro raspbian jessie su pi 3. Il nodo viene preinstallato nell'immagine ma npm no . Ho avuto difficoltà nell'installazione di npm e questo thread mi ha aiutato a ottenere indizi.

L'errore che ho ricevuto è stato

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

I seguenti 2 comandi in sequenza mi hanno aiutato

sudo apt-get update
sudo apt-get install npm

3
Potresti modificare il tuo post per renderlo più leggibile. Il muro di testo è davvero necessario?
Ghanima

2

Trovo il modo più semplice per ottenere NPM (e l'ultima versione di Node.js) su qualsiasi Raspberry PI (da zero a 3) è usare "NVM" ( Node Version Manager ).

Per installare 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

Una volta installato, puoi scaricare l'ultima versione di Node.js in qualsiasi momento in questo modo:

nvm install node

Fatto!

Verifica che NPM sia installato:

npm --version

Questo ha funzionato bene per me sul mio pi 3b + la prima soluzione installata npm 1.6 e ha continuato a incorrere in errori durante l'installazione dei pacchetti. NVM ha fatto funzionare le cose correttamente.
sirclesam,

1

Se stai riscontrando problemi con i pacchetti binari, ti consiglio di compilarlo da solo, in questo modo avrai un'idea migliore di quando qualcosa non funziona / i pacchetti binari potrebbero essere per un diverso tipo di processore (non ARM).

Suggerisco di consultare https://gist.github.com/3301813 per le istruzioni di compilazione di Raspberry Pi NodeJS.


Grazie Ben. Mi ero imbattuto in quell'articolo prima. Supponevo che NPM potesse essere separato dall'albero dei sorgenti di Node.js?

NPM è separato all'indirizzo github.com/isaacs/npm, tuttavia le versioni recenti di nodejs generalmente vengono fornite con npm in bundle.

1

Come ha sottolineato Ben, suggerirei di compilare Node.js da solo sul Raspberry Pi. Da 0.8.10 (circa) questo è possibile senza ulteriori indugi. Semplicemente

$ ./configure
$ make
$ sudo make install

e basta. Quindi verrà installato Node.js compreso npm.

Funziona come un incanto :-)!


Grazie Golo. Minitech ha fornito una risposta che ha funzionato meglio per me. Il Raspberry Pi è piuttosto lento, quindi penso che costruire, quindi l'installazione sarebbe un po 'più doloroso.

1
Dai un'occhiata alla versione di Node.js installata utilizzando apt-get, quindi confronta questa versione con la versione corrente di Node.js e capirai perché non ho suggerito di usare apt-get... ;-)
Golo Roden

Ho creato alcuni tarball precompilati che possono essere utilizzati su un Raspberry Pi se non si vuole davvero attendere la compilazione del sorgente. gist.github.com/3245130
Adam MW,

1

Tutto ciò che fai è digitare

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

Ha funzionato per me e sono stato in grado di installarlo senza errori e dovrebbe funzionare con un programma!


1
Si prega di essere più precisi: quale versione di nodo è stata installata in questo modo, qual è stata l'origine del pacchetto (ne è stata aggiunta una nuova?), Su quale sistema operativo è stato installato, su quale versione di rPi si possiede, su quale arco del nodo è ( armv6, v7). La tua risposta potrebbe risolvere qualcosa, ma non sappiamo cosa quindi nessuno lo userà.
bosch,

0

Prova a seguire questo post . Riesco a eseguire npm su / opt / node / npm, ma quando lo copio su / usr / bin / manca 'npmlog'.


È preferibile copiare i passaggi nella risposta durante l'attribuzione della fonte per ulteriori informazioni, nel caso in cui il sito di origine si abbassi, la pagina venga eliminata o spostata, ecc. Almeno un riepilogo delle fasi generali del processo.
Tevo D,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.