Installieren Sie Node.js auf einer SD-Karte, um auf allen Pi-Modellen zu funktionieren


13

Ich lade die letzte Raspbian-Version (27.05.2016) auf https://www.raspberrypi.org/downloads/raspbian/ herunter

Node.js ist bereits mit der Version 0.10.29 installiert, daher habe ich diese entfernt und neu installiert

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

Ich möchte jedoch, dass meine SD-Karte auf allen Raspberry Pi-Modellen (Pi 1, 2, 3 und Zero) funktioniert

node -v

Auf einem Pi 1 oder auf einem Pi 0 erhalte ich eine "illegale Anweisung".

Meine Frage ist: Ist es möglich, eine Kopie von Node.js auf einem Pi zu installieren, der auf allen Modellen funktioniert? Oder ist v0.10.29 die einzige, die auf allen Pis funktioniert?


Wenn Sie Quellen von zufälligen Websites herunterladen, müssen Sie mit Problemen rechnen. Was lässt Sie denken, dass die Version von Node.js für den Raspberry Pi geeignet ist?
Joan

Dies ist keine zufällige Website, aber wo die offiziellen NodeJS-Installationsanweisungen Sie verweisen. Rest siehe meine Antwort.
Grmpfhmbl

Antworten:


29

Der Grund, warum dies auf Ihrem Raspberry Pi 1 nicht funktioniert, ist, dass diese Pakete für die falsche CPU kompiliert wurden - armhf (ARM 32-Bit-Hard-Float, ARMv7 und höher: arm-linux-gnueabihf)

Das Paket sollte also auf Ihrem Pi2 funktionieren, aber nicht auf dem Pi1. Ich denke, es gibt keinen schnellen und einfachen Weg, um ein Bild zu erhalten, das auf beiden läuft. Wenn Sie einen modernen NodeJS auf Ihrem Pi1 installieren möchten, laden Sie den richtigen Tarball von https://nodejs.org/dist/ herunter. Beispiel:

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

Der letzte Befehl sollte gedruckt werden v6.2.1.

Jetzt können Sie es nach / usr / local kopieren

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

Zum Testen fügen Sie Ihrem Pfad / usr / local / bin hinzu

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

Dies sollte 6.2.1und 3.9.3für die Versionen von nodejs und npm gedruckt werden. Wenn Sie eine andere Version benötigen, wählen Sie einfach die gewünschte aus den Downloads aus.

Vergessen Sie nicht, den PATH zu Ihrem .bashrc hinzuzufügen , um ihn dauerhaft zu machen.

Um die richtige Architektur zu finden, können Sie cat /proc/cpuinfoein Terminal eingeben, das ungefähr so ​​aussehen sollte

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

update Ich habe gerade diese Antwort gesehen: /raspberrypi//a/37976/34825. Sie verhält sich im Grunde genauso wie ich, außer dass der Knoten in / opt / installiert und Symlinks in / usr / bin / erstellt werden .


Vielen Dank für Ihre Antwort. Ich denke, ich werde 2 NodeJS (einen ArmV6 und einen ArmV7) installieren und einen Dienst hinzufügen, um beim Booten einen Symlink auf / usr / bin / node mit dem richtigen Node (in / usr / local / bin /) zu erstellen. node_armv6 oder / usr / local / bin / node_armv7)
4Taine

Das hat funktioniert, toll. konnte Node 7.7.4 auf meinem Pi Zero W installieren. Danke!
Kraig Walker

Für alle, die dies lesen: Sie möchten wahrscheinlich die neueste Knotenversion anstelle von Version 6.2.1. Ersetzen Sie einfach die Versionsnummer in allen Befehlen oben durch die von Ihnen gewählte Version von nodejs.org/dist
Camp bell

6

In einer Codezeile, neueste Version, für jeden Himbeer-Pi:

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

Quellcode: https://github.com/audstanley/NodeJs-Raspberry-Pi/


Auf den ersten Blick scheint das Skript keine Überprüfung der geistigen Gesundheit zu enthalten. Ich würde sehr vorsichtig sein, dies nur als root auszuführen.
Grmpfhmbl

Dies löste mein Problem mit den veralteten Nodejs in armv6, als ich sie mitapt install
StefansArya

2

Die obige Lösung von Audstanley hat mir gefallen, obwohl sie bei mir nicht sofort funktioniert hat.

Ich stellte fest, dass ich das Skript mit Root-Zugriff ausführen musste.

Das hat bei mir funktioniert:

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

1
Es hat nicht funktioniert, weil Sie "wget" als root ausführen und nicht die Bash, die das Skript ausführt. Setzen Sie einfach das "sudo" nach der Pipe vor "bash".
Grmpfhmbl


-1

Oder holen Sie sich die neueste Version:

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.xz' | cut -d'"' -f2)"
wget https://nodejs.org/dist/latest/$NODE
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.