在SD卡上安装Node.js以在所有Pi型号上使用


13

我在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和零)上使用,目前,当我执行

node -v

在Pi 1或Pi 0上,我得到一条“非法指令”。

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


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

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

Answers:


29

这在您的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添加到您的路径中

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

这应该打印出来,6.2.13.9.3显示nodejs和npm的版本。如果您需要其他版本,只需从下载中选择所需的版本即可。

不要忘记将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

更新刚刚看到了这个答案/raspberrypi//a/37976/34825,除了在/ opt /中安装节点并在/ usr / bin /中创建符号链接外,该功能基本上与我相同。


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

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

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


2

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

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

这为我工作:

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

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


-1

或获取最新版本:

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.xz' | cut -d'"' -f2)"
wget https://nodejs.org/dist/latest/$NODE
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.