我在https://www.raspberrypi.org/downloads/raspbian/

上下载了最新的raspbian版本(2016-05-27),Node.js已经安装了0.10.29版本,因此我删除了它,然后用

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
重新安装它,但是我希望我的SD卡可以在所有Raspberry Pi型号(Pi 1、2、3和零)上使用。
目前,当我在Pi 1或Pi 0上执行
node -v


时,会收到“非法指令”。

我的问题是:是否可以在适用于所有型号的Pi上安装Node.js的副本?还是v0.10.29是唯一适用于所有Pi的版本?

评论

如果您从随机网站下载源代码,则必定会遇到问题。是什么让您认为Node.js版本适合Raspberry Pi?

这不是一个随机的网站,而是官方的nodejs安装说明指向您的网站。休息看看我的答案。

#1 楼

在您的Raspberry Pi 1上不起作用的原因是,这些软件包是针对错误的CPU编译的-armhf(ARM 32位硬浮点,ARMv7及更高版本:arm-linux-gnueabihf)

因此,该包装应在您的Pi2上有效,但不能在Pi1上有效。我想没有一种快速简便的方法来获得可以在两者上运行的图像。如果要在Pi1上安装现代的nodejs,请从https://nodejs.org/dist/下载正确的tarball,例如:

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


最后一个命令现在应该打印v6.2.1

现在您可以将其复制到/ usr / local

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


要进行测试,请在您的计算机上添加/ usr / local / bin path

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


这将为nodejs和npm版本打印6.2.13.9.3。如果需要其他版本,只需从下载中选择一个即可。

不要忘记将PATH添加到.bashrc中以使其永久。

要找到正确的体系结构,您可以在终端中键入cat /proc/cpuinfo,并且应该显示类似

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刚看到此答案https ://raspberrypi.stackexchange.com/a/37976/34825与我所做的基本相同,除了在/ opt /中安装节点并在/ usr / bin /中创建符号链接。

评论


谢谢您的回答,我想我将安装2个nodejs(一个armv6和一个armv7)并添加一个用于在启动时在/ usr / bin / node上使用正确节点(到/ usr / local / bin /中)创建符号链接的服务node_armv6或/ usr / local / bin / node_armv7)

– 4Taine
16年3月3日在14:30



很好,很好。设法在我的Pi Zero W上安装了Node 7.7.4。谢谢!

–克雷格·沃克(Kraig Walker)
17 Mar 25 '14:11

对于阅读此书的人:您可能想要最新的节点版本,而不是6.2.1版本。只需将上面所有命令中的版本号替换为从nodejs.org/dist中选择的版本

–营钟
18年4月21日在19:46

#2 楼

在适用于任何树莓派的最新一行代码中:

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


源代码:
https://github.com/audstanley/NodeJs- Raspberry-Pi /

评论


乍看之下,脚本中似乎没有任何健全性检查。我将以root用户身份运行时非常小心。

– Grmpfhmbl
18年3月11日在12:59



使用apt install进行安装时,这解决了我关于armv6中过时的Node.js的问题

– SteefansArya
19年5月8日在1:53

#3 楼

我喜欢上面的Audstanley解决方案,尽管它对我来说开箱即用。

我发现我需要以root用户访问权限运行脚本。

这对我有用:

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


评论


它不起作用,因为您以root身份运行“ wget”,而不是以运行脚本的bash身份运行。只需将“ sudo”放在“ bash”前面的管道之后。

– Grmpfhmbl
18 Mar 11 '18 at 12:39

#4 楼

我遇到了同样的问题,并制作了一些快速的bash脚本来安装节点v4,v5和v6.3.1:

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

它们适用于Pi Zero,但应适用于所有ARMv6兼容芯片(1A 1B)。实际上,这甚至可以在ARMv7芯片(2B 3B)上工作,因为它们对较旧的二进制文件很满意。

希望您发现它们有用。

#5 楼

或获取最新版本:

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