Instal Node.js pada kartu SD untuk bekerja pada semua model Pi

13

Saya mengunduh versi raspbian terakhir (2016-05-27) di https://www.raspberrypi.org/downloads/raspbian/

Node.js sudah diinstal dengan versi 0.10.29, jadi saya menghapusnya dan menginstalnya kembali

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

Tetapi saya ingin kartu SD saya berfungsi pada semua model Raspberry Pi (Pi 1, 2, 3 dan Zero) Saat ini, ketika saya melakukan

node -v

pada Pi 1 atau pada Pi nol, saya mendapatkan "instruksi ilegal".

Pertanyaan saya adalah: Apakah mungkin untuk menginstal salinan Node.js pada Pi yang berfungsi pada semua model? Atau apakah v0.10.29 satu-satunya yang bekerja pada semua Pis?

4Taine
sumber
Jika Anda mengunduh sumber dari situs web acak, Anda harus menghadapi masalah. Apa yang membuat Anda berpikir bahwa versi Node.js cocok untuk Raspberry Pi?
joan
Ini BUKAN situs web acak, tetapi di mana simpul resmi menginstal instruksi mengarahkan Anda. Istirahat lihat jawaban saya.
Grmpfhmbl

Jawaban:

29

Alasan mengapa ini tidak bekerja pada Raspberry Pi 1 Anda adalah, bahwa paket-paket ini dikompilasi untuk CPU - armhf yang salah (ARM 32-bit hard-float, ARMv7 dan yang lebih tinggi: arm-linux-gnueabihf)

Jadi paket harus bekerja pada Pi2 Anda tetapi tidak pada Pi1. Saya kira tidak ada cara cepat dan mudah untuk mendapatkan gambar yang berjalan pada keduanya. Jika Anda ingin menginstal nodejs modern di Pi1 Anda, unduh tarball yang benar dari https://nodejs.org/dist/ Misalnya:

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

Perintah terakhir harus dicetak v6.2.1.

Sekarang Anda dapat menyalinnya ke / usr / local

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

Untuk pengujian tambahkan / usr / local / bin ke jalur Anda

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

Ini harus mencetak 6.2.1dan 3.9.3untuk versi nodejs dan npm. Jika Anda membutuhkan versi yang berbeda, pilih saja yang Anda sukai dari unduhan.

Jangan lupa untuk menambahkan PATH ke .bashrc Anda untuk membuatnya permanen.

Untuk menemukan arsitektur yang benar, Anda dapat mengetik cat /proc/cpuinfodi terminal dan itu akan menunjukkan sesuatu seperti

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

pembaruan Hanya melihat jawaban ini /raspberrypi//a/37976/34825 yang pada dasarnya melakukan hal yang sama seperti yang saya lakukan, kecuali menginstal simpul di / opt / dan membuat symlink di / usr / bin / .

Grmpfhmbl
sumber
terima kasih atas jawaban Anda, saya pikir saya akan menginstal 2 nodejs (satu armv6 dan satu armv7) dan menambahkan layanan untuk membuat boot boot symlink pada / usr / bin / node dengan node yang benar (ke / usr / local / bin / node_armv6 atau / usr / local / bin / node_armv7)
4Taine
Itu berhasil, bagus. berhasil mendapatkan Node 7.7.4 diinstal pada Pi Zero W. terima kasih!
Kraig Walker
Untuk siapa pun yang membaca ini: Anda mungkin menginginkan versi simpul terbaru, bukan versi 6.2.1. Cukup ganti nomor versi di semua perintah di atas dengan versi yang Anda pilih dari nodejs.org/dist
Camp bell
6

Dalam satu baris kode, versi terbaru, untuk pi raspberry apa pun:

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

Kode sumber: https://github.com/audstanley/NodeJs-Raspberry-Pi/

Audstanley
sumber
Pada pandangan pertama sepertinya tidak ada pemeriksaan kewarasan dalam naskah. Saya akan sangat berhati-hati untuk menjalankan ini sebagai root.
Grmpfhmbl
Ini memecahkan masalah saya tentang Nodejs yang ketinggalan zaman di armv6 saat menginstal denganapt install
StefansArya
2

Saya menyukai solusi Audstanley di atas meskipun tidak berhasil bagi saya di luar kotak.

Saya menemukan bahwa saya perlu menjalankan skrip dengan akses root.

Ini bekerja untuk saya:

sudo bash
sudo wget -O - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | bash
exit
node -v
DanielMuhlig
sumber
1
Itu tidak berhasil karena Anda menjalankan "wget" sebagai root dan bukan bash yang menjalankan skrip. Sederhananya "sudo" setelah pipa di depan "bash".
Grmpfhmbl
1

Saya memiliki masalah yang sama dan membuat beberapa skrip bash cepat untuk menginstal node v4, v5 dan v6.3.1:

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

Mereka untuk Pi Zero tetapi harus bekerja untuk semua chip yang kompatibel dengan ARMv6 (1A 1B). Sebenarnya ini bahkan harus bekerja pada chip ARMv7 (2B 3B) karena mereka senang dengan binari yang lebih tua .

Semoga Anda menemukan mereka berguna.

Steven de Salas
sumber
-1

Atau dapatkan versi terbaru:

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