Installa Node.js su una scheda SD per funzionare su tutti i modelli Pi


13

Scarico l'ultima versione di raspbian (27/05/2016) su https://www.raspberrypi.org/downloads/raspbian/

Node.js è già installato con la versione 0.10.29, quindi l'ho rimosso e reinstallato con

apt-get remove nodered
apt-get remove nodejs nodejs-legacy
curl -sL https://deb.nodesource.com/setup_4.x | sudo bash -
sudo apt-get install -y build-essential python-rpi.gpio nodejs

Ma vorrei che la mia scheda SD funzionasse su tutti i modelli Raspberry Pi (Pi 1, 2, 3 e Zero) Attualmente, quando faccio un

node -v

su un Pi 1 o su un Pi zero, ricevo una "istruzione illegale".

La mia domanda è: è possibile installare una copia di Node.js su un Pi che funziona su tutti i modelli? O è v0.10.29 l'unico che funziona su tutti i Pis?


Se scarichi fonti da siti Web casuali devi aspettarti dei problemi. Cosa ti fa pensare che la versione di Node.js sia adatta per Raspberry Pi?
joan

Questo NON è un sito web casuale, ma dove ti indicano le istruzioni di installazione ufficiali di nodejs. Resto, vedi la mia risposta.
Grmpfhmbl,

Risposte:


29

Il motivo per cui questo non funziona sul tuo Raspberry Pi 1 è che questi pacchetti sono compilati per la CPU sbagliata - armhf (ARM 32-bit hard-float, ARMv7 e versioni successive: arm-linux-gnueabihf)

Quindi il pacchetto dovrebbe funzionare sul tuo Pi2 ma non sul Pi1. Immagino non ci sia un modo semplice e veloce per ottenere un'immagine che funzioni su entrambi. Se vuoi installare un moderno nodejs sul tuo Pi1, scarica il tarball corretto da https://nodejs.org/dist/ Ad esempio:

cd ~
wget https://nodejs.org/dist/v6.2.1/node-v6.2.1-linux-armv6l.tar.gz
tar -xzf node-v6.2.1-linux-armv6l.tar.gz
node-v6.2.1-linux-armv6l/bin/node -v

L'ultimo comando dovrebbe essere stampato v6.2.1.

Ora puoi copiarlo in / usr / local

cd node-v6.2.1-linux-armv6l/
sudo cp -R * /usr/local/

Per il test aggiungi / usr / local / bin al tuo percorso

export PATH=$PATH:/usr/local/bin
node -v
npm -v

Questo dovrebbe stampare 6.2.1e 3.9.3per le versioni di nodejs e npm. Se hai bisogno di una versione diversa, scegli quella che ti piace dai download.

Non dimenticare di aggiungere il PERCORSO al tuo .bashrc per renderlo permanente.

Per trovare l'architettura corretta, puoi digitare cat /proc/cpuinfoun terminale e questo dovrebbe mostrare qualcosa di simile

pi@raspberrypi:~ $ cat /proc/cpuinfo
processor   : 0
model name  : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS    : 697.95
Features    : half thumb fastmult vfp edsp java tls 
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part    : 0xb76
CPU revision    : 7

aggiornamento Ho appena visto questa risposta /raspberrypi//a/37976/34825 che sostanzialmente fa la stessa cosa che ho fatto io, tranne installare il nodo in / opt / e creare collegamenti simbolici in / usr / bin / .


grazie per la tua risposta, penso che installerò 2 nodejs (uno armv6 e uno armv7) e aggiungerò un servizio per creare all'avvio un collegamento simbolico su / usr / bin / node con il nodo corretto (in / usr / local / bin / node_armv6 o / usr / local / bin / node_armv7)
4Taine

Funzionava alla grande. sono riuscito a installare il Nodo 7.7.4 sul mio Pi Zero W. Grazie!
Kraig Walker

A chiunque legga questo: Probabilmente vuoi la versione del nodo più recente invece della versione 6.2.1. Sostituisci semplicemente il numero di versione in tutti i comandi sopra con la versione scelta da nodejs.org/dist
Camp bell

6

In una riga di codice, ultima versione, per qualsiasi raspberry pi:

wget -O - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | sudo bash;
node -v;

Codice sorgente: https://github.com/audstanley/NodeJs-Raspberry-Pi/


A prima vista sembra non esserci alcun controllo di integrità nella sceneggiatura. Starei molto attento a eseguirlo come root.
Grmpfhmbl

Questo stava risolvendo il mio problema sui Nodejs obsoleti in armv6 durante l'installazione conapt install
StefansArya

2

Mi è piaciuta la soluzione di Audstanley sopra, anche se non ha funzionato per me.

Ho scoperto che dovevo eseguire lo script con accesso root.

Questo ha funzionato per me:

sudo bash
sudo wget -O - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | bash
exit
node -v

1
Non ha funzionato perché si esegue "wget" come root e non come bash che esegue lo script. Basta mettere il "sudo" dopo il tubo davanti a "bash".
Grmpfhmbl


-1

O ottieni l'ultima versione:

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.xz' | cut -d'"' -f2)"
wget https://nodejs.org/dist/latest/$NODE
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.