Installez Node.js sur une carte SD pour fonctionner sur tous les modèles Pi

13

Je télécharge la dernière version de raspbian (2016-05-27) sur https://www.raspberrypi.org/downloads/raspbian/

Node.js est déjà installé avec la version 0.10.29, donc je l'ai supprimé et réinstallé avec

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

Mais je voudrais que ma carte SD fonctionne sur tous les modèles Raspberry Pi (Pi 1, 2, 3 et Zero) Actuellement, lorsque je fais un

node -v

sur un Pi 1 ou sur un Pi zéro, j'obtiens une "instruction illégale".

Ma question est: est-il possible d'installer une copie de Node.js sur un Pi qui fonctionne sur tous les modèles? Ou est-ce que la v0.10.29 est la seule qui fonctionne sur tous les Pis?

4Taine
la source
Si vous téléchargez des sources à partir de sites Web aléatoires, vous devez vous attendre à des problèmes. Qu'est-ce qui vous fait penser que la version de Node.js convient au Raspberry Pi?
joan
Ce n'est PAS un site Web aléatoire, mais vers lequel les instructions d'installation de nodejs officielles vous indiquent. Reste voir ma réponse.
Grmpfhmbl

Réponses:

29

La raison pour laquelle cela ne fonctionne pas sur votre Raspberry Pi 1 est que ces packages sont compilés pour le mauvais processeur - armhf (ARM 32-bit hard-float, ARMv7 et plus: arm-linux-gnueabihf)

Le package devrait donc fonctionner sur votre Pi2 mais pas sur le Pi1. Je suppose qu'il n'y a pas de moyen rapide et facile d'obtenir une image qui s'exécute sur les deux. Si vous souhaitez installer un nodejs moderne sur votre Pi1, téléchargez l'archive tar correcte sur https://nodejs.org/dist/ Par exemple:

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

La dernière commande devrait s'imprimer v6.2.1.

Vous pouvez maintenant le copier dans / usr / local

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

Pour tester, ajoutez / usr / local / bin à votre chemin

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

Cela devrait imprimer 6.2.1et 3.9.3pour les versions de nodejs et npm. Si vous avez besoin d'une version différente, choisissez simplement celle que vous aimez dans les téléchargements.

N'oubliez pas d'ajouter le CHEMIN à votre .bashrc pour le rendre permanent.

Pour trouver la bonne architecture, vous pouvez taper cat /proc/cpuinfodans un terminal et cela devrait montrer quelque chose comme

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

mise à jour Je viens de voir cette réponse /raspberrypi//a/37976/34825 qui fait essentiellement la même chose que moi, sauf installer le nœud dans / opt / et créer des liens symboliques dans / usr / bin / .

Grmpfhmbl
la source
merci pour votre réponse, je pense que je vais installer 2 nodejs (un armv6 et un armv7) et ajouter un service pour créer au démarrage un lien symbolique sur / usr / bin / node avec le bon nœud (dans / usr / local / bin / node_armv6 ou / usr / local / bin / node_armv7)
4Taine
Ça a marché, super. réussi à installer Node 7.7.4 sur mon Pi Zero W. Merci!
Kraig Walker
Pour quiconque lit ceci: Vous voulez probablement la dernière version du nœud au lieu de la version 6.2.1. Remplacez simplement le numéro de version dans toutes les commandes ci-dessus par la version choisie sur nodejs.org/dist
Camp bell
6

En une seule ligne de code, dernière version, pour tout Raspberry Pi:

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

Code source: https://github.com/audstanley/NodeJs-Raspberry-Pi/

Audstanley
la source
À première vue, il ne semble pas y avoir de vérifications d'intégrité dans le script. Je serais très prudent de simplement l'exécuter en tant que root.
Grmpfhmbl
Cela résolvait mon problème concernant les Nodejs obsolètes dans armv6 lors de l'installation avecapt install
StefansArya
2

J'ai aimé la solution d'Audstanley ci-dessus, même si cela n'a pas fonctionné pour moi hors de la boîte.

J'ai trouvé que j'avais besoin d'exécuter le script avec un accès root.

Cela a fonctionné pour moi:

sudo bash
sudo wget -O - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | bash
exit
node -v
DanielMuhlig
la source
1
Cela n'a pas fonctionné car vous exécutez "wget" en tant que root et non le bash qui exécute le script. Placez simplement le "sudo" après le tuyau devant "bash".
Grmpfhmbl
1

J'ai eu le même problème et j'ai fait quelques scripts bash rapides pour installer les nœuds v4, v5 et v6.3.1:

https://github.com/sdesalas/node-pi-zero

Ils sont pour le Pi Zero mais devraient fonctionner pour toutes les puces compatibles ARMv6 (1A 1B). En fait, cela devrait même fonctionner sur les puces ARMv7 (2B 3B) car ils sont satisfaits des anciens binaires .

J'espère que vous les trouverez utiles.

Steven de Salas
la source
-1

Ou obtenez la dernière version:

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.xz' | cut -d'"' -f2)"
wget https://nodejs.org/dist/latest/$NODE
Pepe
la source