Cài đặt Node.js trên thẻ SD để hoạt động trên tất cả các kiểu máy Pi


13

Tôi tải xuống phiên bản raspbian cuối cùng (2016-05-27) trên https://www.raspberrypi.org/doads/raspbian/

Node.js đã được cài đặt với phiên bản 0.10,29, vì vậy tôi đã gỡ bỏ nó và cài đặt lại với

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

Nhưng tôi muốn thẻ SD của tôi hoạt động trên tất cả các mẫu Raspberry Pi (Pi 1, 2, 3 và Zero) Hiện tại, khi tôi làm một

node -v

trên Pi 1 hoặc trên số 0, tôi nhận được "hướng dẫn bất hợp pháp".

Câu hỏi của tôi là: Có thể cài đặt một bản sao của Node.js trên Pi hoạt động trên tất cả các mô hình không? Hay là v0.10,29 là người duy nhất hoạt động trên tất cả Pis?


Nếu bạn tải xuống các nguồn từ các trang web ngẫu nhiên, bạn phải mong đợi vấn đề. Điều gì khiến bạn nghĩ rằng phiên bản Node.js phù hợp với Raspberry Pi?
gia

Đây KHÔNG phải là một trang web ngẫu nhiên, nhưng nơi các hướng dẫn cài đặt nodejs chính thức chỉ dẫn bạn đến. Nghỉ ngơi xem câu trả lời của tôi.
Grmpfhmbl

Câu trả lời:


29

Lý do tại sao điều này không hoạt động trên Raspberry Pi 1 của bạn là vì các gói này được biên dịch sai CPU - armhf (ARM 32-hard-float, ARMv7 trở lên: arm-linux-gnuispihf)

Vì vậy, gói nên hoạt động trên Pi2 của bạn nhưng không phải trên Pi1. Tôi đoán không có cách nhanh chóng và dễ dàng để có được một hình ảnh chạy trên cả hai. Nếu bạn muốn cài đặt một nút hiện đại trên Pi1 của mình, hãy tải xuống tarball chính xác từ https://nodejs.org/dist/ Ví dụ:

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

Lệnh cuối cùng sẽ in v6.2.1.

Bây giờ bạn có thể sao chép nó vào / usr / local

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

Để kiểm tra thêm / usr / local / bin vào đường dẫn của bạn

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

Điều này sẽ in 6.2.13.9.3cho các phiên bản của nodejs và npm. Nếu bạn cần một phiên bản khác, chỉ cần chọn phiên bản bạn thích từ các bản tải xuống.

Đừng quên thêm PATH vào .bashrc của bạn để làm cho nó vĩnh viễn.

Để tìm kiến ​​trúc chính xác, bạn có thể nhập cat /proc/cpuinfovào một thiết bị đầu cuối và nó sẽ hiển thị một cái gì đó như

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

cập nhật Chỉ cần xem câu trả lời này /raspberrypi//a/37976/34825 về cơ bản giống như tôi đã làm, ngoại trừ cài đặt nút trong / opt / và tạo liên kết tượng trưng trong / usr / bin / .


cảm ơn câu trả lời của bạn, tôi nghĩ rằng tôi sẽ cài đặt 2 nodejs (một armv6 và một armv7) và thêm dịch vụ tạo khi khởi động một symlink trên / usr / bin / nút với nút chính xác (vào / usr / local / bin / node_armv6 hoặc / usr / local / bin / node_armv7)
4Taine

Điều đó đã làm việc, tuyệt vời. quản lý để cài đặt Node 7.7.4 trên Pi Zero W. Cảm ơn!
Kraig Walker

Cho bất cứ ai đọc điều này: Bạn có thể muốn phiên bản nút mới nhất thay vì phiên bản 6.2.1. Chỉ cần thay thế số phiên bản trong tất cả các lệnh ở trên bằng phiên bản bạn đã chọn từ nodejs.org/dist
Chuông trại

6

Trong một dòng mã, phiên bản mới nhất, cho bất kỳ pi mâm xôi nào:

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

Mã nguồn: https://github.com/audstanley/NodeJs-Raspberry-Pi/


Thoạt nhìn dường như không có bất kỳ sự kiểm tra tỉnh táo nào trong kịch bản. Tôi sẽ rất cẩn thận khi chỉ chạy cái này với quyền root.
Grmpfhmbl

Điều này đã giải quyết vấn đề của tôi về các Nodejs lỗi thời trong armv6 khi cài đặt vớiapt install
StefansArya

2

Tôi thích giải pháp của Audstanley ở trên mặc dù nó không hiệu quả với tôi.

Tôi thấy rằng tôi cần phải chạy tập lệnh với quyền truy cập root.

Điều này làm việc cho tôi:

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

1
Nó không hoạt động vì bạn chạy "wget" với quyền root chứ không phải bash chạy script. Đơn giản chỉ cần đặt "sudo" sau đường ống trước "bash".
Grmpfhmbl

1

Tôi đã có cùng một vấn đề và thực hiện một số tập lệnh bash nhanh để cài đặt nút v4, v5 và v6.3.1:

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

Chúng dành cho Pi Zero nhưng nên hoạt động cho tất cả các chip tương thích ARMv6 (1A 1B). Trong thực tế, điều này thậm chí sẽ hoạt động trên các chip ARMv7 (2B 3B) vì chúng hài lòng với các nhị phân cũ hơn .

Hy vọng bạn se thây chung hưu dụng.


-1

Hoặc lấy phiên bản mới nhất:

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.xz' | cut -d'"' -f2)"
wget https://nodejs.org/dist/latest/$NODE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.