すべてのPiモデルで動作するようにNode.jsをSDカードにインストールします


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、およびZero)で動作させたいのですが、現在、

node -v

Pi 1またはPi 0で、「違法な指示」が表示されます。

私の質問は、すべてのモデルで動作するPiにNode.jsのコピーをインストールすることは可能ですか?または、v0.10.29がすべてのPiで機能する唯一のものですか?


ランダムなWebサイトからソースをダウンロードする場合、問題を予期する必要があります。Node.jsのバージョンがRaspberry Piに適していると思う理由は何ですか?
ジョアン

これはランダムなWebサイトではありませんが、公式のnodejsインストール手順で指示されています。残りの私の答えを参照してください。
Grmpfhmbl

回答:


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.1し、3.9.3nodejsと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

updateこの答えは/raspberrypi//a/37976/34825で、/ opt /にノードをインストールし、/ usr / bin /にシンボリックリンクを作成する以外は基本的に同じです。


あなたの答えをありがとう、私は2つのnodejs(1つのarmv6と1つのarmv7)をインストールし、起動時に/ usr / bin / nodeに正しいノード(/ usr / local / bin /に)のシンボリックリンクを作成するためのサービスを追加すると思いますnode_armv6または/ usr / local / bin / node_armv7)
4Taine

うまくいきました。Pi Zero WにNode 7.7.4をインストールできました。ありがとうございます!
クレイグウォーカー

これを読んでいる人には:バージョン6.2.1ではなく、最新のノードバージョンが必要でしょう。単にからあなたの選ばれたバージョンと、上記のすべてのコマンドでバージョン番号を交換nodejs.org/dist
キャンプベル

6

1行のコード、最新バージョン、ラズベリーパイ用:

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

これは、インストール時にarmv6の古いNodejsについての私の問題を解決していましたapt install
StefansArya

2

上記のAudstanleyのソリューションは気に入りましたが、箱から出してすぐには機能しませんでした。

ルートアクセスでスクリプトを実行する必要があることがわかりました。

これは私のために働いた:

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

1
スクリプトを実行するbashではなく、ルートとして「wget」を実行するため、機能しませんでした。単に「bash」の前のパイプの後に「sudo」を置きます。
Grmpfhmbl

1

同じ問題があり、ノードv4、v5、v6.3.1をインストールするためのいくつかのクイックbashスクリプトを作成しました。

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

これらはPi Zero用ですが、すべてのARMv6互換チップ(1A 1B)で動作するはずです。実際、これは古いバイナリに満足しているため、ARMv7チップ(2B 3B)でも動作するはずです。

それらが役立つことを願っています。


-1

または、最新バージョンを入手してください。

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.xz' | cut -d'"' -f2)"
wget https://nodejs.org/dist/latest/$NODE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.