ติดตั้ง Node.js บนการ์ด SD เพื่อทำงานกับ Pi ทุกรุ่น


13

ฉันดาวน์โหลดเวอร์ชัน raspbian ล่าสุด (2016-05-27) บนhttps://www.raspberrypi.org/downloads/raspbian/

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 Pi ฉันได้รับ "คำสั่งที่ผิดกฎหมาย"

คำถามของฉัน: เป็นไปได้ไหมที่จะติดตั้งสำเนา Node.js บน Pi ที่ใช้งานได้กับทุกรุ่น? หรือ v0.10.29 เดียวที่ทำงานบน Pis ทั้งหมดหรือไม่


หากคุณดาวน์โหลดแหล่งข้อมูลจากเว็บไซต์สุ่มคุณต้องคาดหวังปัญหา อะไรทำให้คุณคิดว่าเวอร์ชั่นของ Node.js เหมาะสำหรับ Raspberry Pi
joan

นี่ไม่ใช่เว็บไซต์แบบสุ่ม แต่จุดที่คำแนะนำในการติดตั้ง nodejs อย่างเป็นทางการชี้ให้คุณ ดูคำตอบของฉัน
Grmpfhmbl

คำตอบ:


29

เหตุผลที่สิ่งนี้ไม่สามารถใช้กับ Raspberry Pi 1 ของคุณได้นั่นคือแพคเกจเหล่านี้ถูกรวบรวมสำหรับ CPU ที่ไม่ถูกต้อง - armhf (ARM 32-bit hard-float, ARMv7 ขึ้นไป: arm-linux-gnueabihf)

ดังนั้นแพ็คเกจควรทำงานกับ Pi2 ของคุณ แต่ไม่ใช่ใน Pi1 ฉันเดาว่าไม่มีวิธีที่ง่ายและรวดเร็วในการรับภาพที่ทำงานทั้งสองอย่าง หากคุณต้องการติดตั้ง nodejs ที่ทันสมัยบน Pi1 ของคุณให้ดาวน์โหลด tarball ที่ถูกต้องจากhttps://nodejs.org/dist/ตัวอย่างเช่น:

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.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 /และสร้าง symlinks ใน/ usr / bin /


ขอบคุณสำหรับคำตอบของคุณฉันคิดว่าฉันจะติดตั้ง 2 nodejs (หนึ่ง armv6 และหนึ่ง armv7) และเพิ่มบริการสำหรับสร้างในการบูต symlink บน / usr / bin / node กับโหนดที่ถูกต้อง (เป็น / usr / local / bin / node_armv6 หรือ / usr / local / bin / node_armv7)
4Taine

มันใช้ได้ดีมาก จัดการเพื่อรับโหนด 7.7.4 ติดตั้งบน Pi Zero W. ของฉันขอบคุณ!
Kraig Walker

หากต้องการอ่านสิ่งนี้: คุณอาจต้องการเวอร์ชันโหนดใหม่ล่าสุดแทนเวอร์ชัน 6.2.1 เพียงแทนที่หมายเลขเวอร์ชันในคำสั่งทั้งหมดข้างต้นด้วยรุ่นที่คุณเลือกจากnodejs.org/dist
Camp bell

6

ในโค้ดหนึ่งบรรทัดเวอร์ชันล่าสุดสำหรับราสเบอร์รี่ pi ใด ๆ :

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/


เมื่อดูอย่างรวดเร็วครั้งแรกดูเหมือนว่าจะไม่มีการตรวจสติในสคริปต์ ฉันระวังเป็นอย่างยิ่งที่จะเรียกใช้สิ่งนี้ในฐานะที่เป็นราก
Grmpfhmbl

นี่เป็นการแก้ไขปัญหาของฉันเกี่ยวกับ Nodejs ที่ล้าสมัยใน armv6 เมื่อติดตั้งด้วย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
ไม่ทำงานเนื่องจากคุณเรียกใช้ "wget" ในฐานะรูทและไม่ใช่ bash ที่รันสคริปต์ เพียงแค่ใส่ "sudo" หลังท่อหน้า "ทุบตี"
Grmpfhmbl

1

ฉันมีปัญหาเดียวกันและสร้างสคริปต์ทุบตีด่วนสำหรับการติดตั้งโหนด v4, v5 และ v6.3.1:

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.