在Pi 3上安装较新的节点版本


12

设定

我和杰西有一个PI3。根据维基百科它采用了ARM的Cortex-A53ARMv8-A

使用此adafruit教程安装node.js时,我最终得到的节点v0.12仍然是beta阶段。

题:

我想至少要使用v4node.js。如何安装并使其运行?

失败的方法

第一

教程描述了如何进行。

wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-arm64.tar.gz
tar -xvf node-v5.0.0-linux-arm64.tar.gz
cd node-v5.0.0-linux-arm64
sudo cp -R * /usr/local/ #attention copies also readme and other not required files

从v.4.0.0版本开始, 我们的测试套件必须不断通过ARMv6,ARMv7和新的64位ARMv8处理器。

V.5.0.0: ARMv8 64位二进制文​​件:

=>无法执行二进制文件。 -bash: /usr/local/bin/node: cannot execute binary file: Exec format error

第二

https://github.com/nodesource/distributions#installation-instructions

在期间停止 sudo apt-get install -y nodejs

但是我认为他们还没有支持arm64 Github问题

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gyp libc-ares-dev libc-ares2 libjs-node-uuid libjs-underscore libssl-dev
  libssl-doc libv8-3.14-dev libv8-3.14.5 node-abbrev node-ansi
  node-ansi-color-table node-archy node-async node-block-stream
  node-combined-stream node-cookie-jar node-delayed-stream node-forever-agent
  node-form-data node-fstream node-fstream-ignore node-github-url-from-git
  node-glob node-graceful-fs node-gyp node-inherits node-ini
  node-json-stringify-safe node-lockfile node-lru-cache node-mime
  node-minimatch node-mkdirp node-mute-stream node-node-uuid node-nopt
  node-normalize-package-data node-npmlog node-once node-osenv node-qs
  node-read node-read-package-json node-request node-retry node-rimraf
  node-semver node-sha node-sigmund node-slide node-tar node-tunnel-agent
  node-underscore node-which
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
  nodejs
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
1 not fully installed or removed.
Need to get 0 B/8,028 kB of archives.
After this operation, 38.3 MB of additional disk space will be used.
Selecting previously unselected package nodejs.
(Reading database ... 125270 files and directories currently installed.)
Preparing to unpack .../nodejs_5.10.0-1nodesource1~jessie1_armhf.deb ...
Detected old npm client, removing...
Unpacking nodejs (5.10.0-1nodesource1~jessie1) ...

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  294.455070] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  295.546888] Process mmcqd/0 (pid: 52, stack limit = 0xb8cde210)

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  295.618619] Stack: (0xb8cdfd88 to 0xb8ce0000)

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  295.671359] fd80:                   00000007 b9687680 b8cdfdc4 b8cdfda0 8043c924 8043cb34

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  295.770515] fda0: b8cdfdc4 b8cdfdb0 8055fb5c b8cf0150 b9687400 b9687680 b8cdfdfc b8cdfdc8

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  295.869667] fdc0: 8043d588 8043c738 b9687624 80441c80 b8cdfdfc b8cdfde0 80441c80 b8cf0150

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  295.968821] fde0: b9687400 b8cf0258 b8cf0150 b8cdfea4 b8cdfe14 b8cdfe00 80424c54 8043d428

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.067976] fe00: b9687400 00000000 b8cdfe64 b8cdfe18 80425980 80424b5c 00000001 b8cf0034

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.167140] fe20: adec51d0 00000000 b8cb8600 8005f4f8 b8cdfe30 b8cdfe30 b8cdfe5c adec51d0

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.266294] fe40: b8cf0008 b8cf014c b9687c00 b8cf0150 00000000 adec51d0 b8cdfed4 b8cdfe68

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.365448] fe60: 80434494 804256e0 adec51d0 adec5220 b8cdfe94 b8cdfe80 802c88a0 802f97d4

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.464600] fe80: b971e580 b971e584 b8cdfeb4 00000000 b8cf0000 00000000 00000000 80443bec

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.563754] fea0: ffffffff 00ffffff b8cdfed4 b8cf0008 b9687c00 adec51d0 b8cf0000 b8cf0000

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.662907] fec0: 00000001 24590411 b8cdff24 b8cdfed8 80434fd8 804343dc 00000000 adec51d0

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.762059] fee0: b8cf8000 b8cde000 b8cdff0c b8cdfef8 802cf320 b9687400 b8cf0008 b8cf0008

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.861214] ff00: b8cf8000 b8cde000 00000000 24590411 00000001 adec51d0 b8cdff5c b8cdff28

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  296.960367] ff20: 804367c8 80434ee0 80436708 b8cf0010 00000000 b97151c0 00000000 b8cf0008

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  297.059522] ff40: 80436708 00000000 00000000 00000000 b8cdffac b8cdff60 80042494 80436714

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  297.158687] ff60: 8055fba4 00000000 b8cdff94 b8cf0008 00000000 00000000 b8cdff78 b8cdff78

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  297.257840] ff80: 00000000 00000000 b8cdff88 b8cdff88 b97151c0 800423ac 00000000 00000000

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  297.356994] ffa0: 00000000 b8cdffb0 8000f9f8 800423b8 00000000 00000000 00000000 00000000

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  297.456177] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  297.555354] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 55550000 55554000

Message from syslogd@raspberrypi at Apr  6 09:47:46 ...
 kernel:[  298.607208] Code: e89da818 e28400fc ebf11884 eafffff6 (e7f001f2)

相关话题

如何使用GPIO安装node.js


截至今天,最新的RPi3 RaspbianStretch)仍然没有与原生支持提供armv8
not2qubit

Answers:


11

我今天在问题中使用第二种方法安装了node.js,效果很好。我在Raspberry 3上有Raspbian Jessie。

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs 
sudo apt-get install -y build-essential

我不知道为什么这种方法对您不起作用。也许它已经更新并且现在可以更好地工作了?


不知道那是什么,但是当我重新安装时它现在可以正常工作v6.x
Andi Giga

4

如何安装

wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-armv7l.tar.gz
tar -xvf node-v5.0.0-linux-armv7l.tar.gz
cd node-v5.0.0-linux-armv7l
sudo cp -R * /usr/local/ #attention copies also readme and other not required files

为什么选择ArmV7:

在我的pi&package上写有Raspberry Pi 3 Model B并且根据WikipediaThe ARM Cortex-A53 is a microarchitecture implementing the ARMv8-A 64-bit导致我下载了ARMv8 64-bit Binary

但是pi显示为uname -a Linux raspberrypi 4.1.14-v7+ #4 SMP PREEMPT Wed Mar 23 15:30:13 UTC 2016 armv7l GNU/Linux。因此,显然armv7在pi中有一个。

编辑:这似乎是正确的 https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=140572

据我了解,由于缺少操作系统支持,因此使用32位模式。如果有人可以更准确地解释这一点,请发表评论。


Debian arm64在这里有一个版本(debian.org/CD/netinst),但我还无法启动该版本。
ott--

3

使用nvm

另一种解决方案是使用nvm作为Node的安装程序。nvm代表节点版本管理器,它具有许多优点,例如:

  • 选择适合您平台的版本,
  • 使用简单的命令轻松更新Node,
  • node同时安装不同版本的软件(例如,使用不同版本的节点检查程序以测试对不同设置的部署)

尽管一开始我很怀疑(尽管我nvm在其他系统上成功使用过),但是在寻找所有用户都拥有nodenpm安装并可以访问的最佳解决方案(包括root,需要访问RasPi上的硬件)并进入所有节点之后发行版,软件包和资源,我决定尝试使用此方法。而且有效!


这是我的步骤:

  1. 首先,您需要安装nvm。您可以从主文件夹或其他任何位置运行此脚本,但是它将nvm为当前用户安装(在我的情况下为pi,尽管我为此目的创建了另一个脚本,但现在不需要了)。您可能需要用最新版本替换该版本(v0.32.0)。

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | 重击

    您需要重新打开终端以获取对nvm的访问权限

  2. 然后使用以下简单命令安装Node:

    nvm安装v6.6.0

    您可能需要通过签发检查可用的版本,nvm ls-remote然后选择适合您的版本

  3. 您将此版本设置node为系统的默认版本:

    nvm别名默认v6.6.0

  4. 并检查与安装的版本node -vnpm -v


现在,您已经为当前用户安装了Node v6.6.0。root或系统上的其他用户尚无法使用它,但是您可能需要这样做,因此可以:

  • 创建符号链接(别名)以使其在系统范围内可用:

    须藤ln -s /home/pi/.nvm/versions/node/v6.6.0/bin/node / usr / bin / node

    须藤ln -s /home/pi/.nvm/versions/node/v6.6.0/bin/npm / usr / bin / npm

  • 或者,如果您的系统默认情况下已经安装了节点,并且您在使用上述方法时遇到错误(例如我的情况),请运行以下命令:

    n = $(哪个节点); n = $ {n%/ bin / node}; chmod -R 755 $ n / bin / *; 须藤cp -r $ n / {bin,lib,share} / usr / local

node现在,每个人都可以使用新安装的软件包,从而可以全局安装npm软件包等。

请注意,每当您要切换节点版本时,都必须运行上述命令(这似乎很可怕,但所做的只是将node文件复制到/usr/local,它以压缩形式编写)。

我希望这可以帮助某人并节省一些时间!


参考文献:

如何在Brandon Cannaday的RASPBERRY PI上安装 NODE.JS,

以上帖子的第一条评论(作者:RYAN PARSLEY),

这个StackOverflow答案

/usr/local复制想法 附带的DigitalOcean教程

以及互联网和Google,这使我花了数小时试图从大量的想法中选择最佳的解决方案:)


0

根据这篇文章,根据我自己的经验,所有Raspbian预安装的node.js版本都已过时。因此,最好的选择是首先删除所有以前的节点安装并重新安装。这对于Raspbian Stretch也很有效。

做这个:

# Remove outdated Debian package (`node -v` ==> v4.8.2)
sudo apt-get remove nodejs nodejs-legacy nodered
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install -y nodejs

# Now the versions are:  nodejs: v9.3.0  npm: v5.5.1 --> npm need update
sudo npm install npm@latest -g

# Then install these useful tools: 
sudo npm install -g node-gyp
sudo npm install -g npm-check
sudo npm install -g npm-check-updates

# If needed, you can re-install node-red with:
sudo npm install -g --unsafe-perm node-red

警告

一些白痴发布了sudo apt-get remove node*,这破坏了操作系统。请勿将通配符与一起使用apt-get remove/purge,因为它并非旨在处理通配符。(他们工作时真是运气!)

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.