Cài đặt phiên bản nút mới hơn trên Pi 3


12

Thiết lập

Tôi có một PI3 với Jessie. Theo Wikipedia nó sử dụng một ARM Cortex-A53ARMv8-A.

Khi cài đặt node.js bằng cách sử dụng hướng dẫn quảng cáo này, tôi kết thúc với nút v0.12vẫn là giai đoạn beta.

Câu hỏi:

Tôi muốn sử dụng ít nhất v4 của node.js. Làm thế nào để tôi cài đặt cái này và chạy nó?

Phương pháp thất bại

Đầu tiên

Hướng dẫn này mô tả cách làm điều đó.

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

Từ v.4.0.0 thử nghiệm của chúng tôi phải liên tục chuyển qua ARMv6, ARMv7 và bộ xử lý ARMv8 64 bit mới.

V.5.0.0: Nhị phân 64 bit ARMv8:

=> Nó không thể thực thi nhị phân. -bash: /usr/local/bin/node: cannot execute binary file: Exec format error

Thứ hai

https://github.com/nodesource/distribution#installation-inemony

Dừng lại trong sudo apt-get install -y nodejs

Nhưng tôi nghĩ họ chưa có hỗ trợ cho arm64 vấn đề 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)

Chủ đề liên quan

Cách cài đặt node.js với GPIO


Cho đến ngày hôm nay, Raspbian ( Stretch) mới nhất của RPi3 vẫn không được cung cấp hỗ trợ riêng cho armv8.
not2qubit

Câu trả lời:


11

Tôi đã cài đặt node.js bằng phương thức thứ hai trong câu hỏi ngày hôm nay, hoạt động rất tốt. Tôi có Raspbian Jessie trên Raspberry 3.

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

Tôi không biết tại sao phương pháp đó không hiệu quả với bạn. Có lẽ nó đã được cập nhật và hoạt động tốt hơn bây giờ?


Không biết nó là gì nhưng nó hoạt động tốt khi tôi cài đặt lạiv6.x
Andi Giga

4

Cài đặt thế nào

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

Tại sao ArmV7:

Trên pi & gói của tôi được viết Raspberry Pi 3 Model Bvà theo wikipedia : The ARM Cortex-A53 is a microarchitecture implementing the ARMv8-A 64-bitdẫn tôi tải xuốngARMv8 64-bit Binary .

Nhưng pi cho thấy với uname -a Linux raspberrypi 4.1.14-v7+ #4 SMP PREEMPT Wed Mar 23 15:30:13 UTC 2016 armv7l GNU/Linux. Vì vậy, rõ ràng có một armv7trong pi.

EDIT: Có vẻ đúng https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=140572

Chế độ 32 bit được sử dụng, do sự hỗ trợ còn thiếu của hệ điều hành, theo sự hiểu biết của tôi. Nếu ai đó có thể giải thích điều này chính xác hơn, xin vui lòng để lại nhận xét.


Debian có arm64Phiên bản tại đây ( debian.org/CD/netinst ) nhưng tôi chưa thể khởi động phiên bản đó.
ott--

3

Sử dụng nvm

Một giải pháp thay thế là sử dụng nvm làm trình cài đặt cho Node. nvmlà viết tắt của Node Version Manager và nó có nhiều lợi ích như:

  • chọn phiên bản phù hợp cho nền tảng của bạn,
  • dễ dàng cập nhật Node bằng một lệnh đơn giản,
  • các nodephiên bản khác nhau được cài đặt cùng một lúc (để kiểm tra chương trình của bạn với các phiên bản nút khác nhau để kiểm tra việc triển khai cho các thiết lập khác nhau chẳng hạn)

Mặc dù lúc đầu tôi đã nghi ngờ (mặc dù tôi sử dụng nvmthành công trên các hệ thống khác), sau khi tìm giải pháp tốt nhất để có nodenpmcài đặt và có thể truy cập cho tất cả người dùng (bao gồm cả root , cần phải truy cập phần cứng trên RasPi) và lặn vào tất cả các nút phân phối, gói và nguồn, tôi quyết định thử phương pháp này. Va no đa hoạt động!


Đây là các bước của tôi:

  1. trước hết, bạn cần cài đặt nvm . Bạn có thể chạy tập lệnh này từ thư mục nhà của bạn hoặc bất kỳ nơi nào khác nhưng nó sẽ cài đặt nvmcho người dùng hiện tại ( pi trong trường hợp của tôi mặc dù tôi đã tạo một tập lệnh khác cho mục đích này hiện không cần thiết). Bạn có thể muốn thay thế phiên bản (v0.32.0) bằng phiên bản mới nhất.

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

    Bạn cần mở lại thiết bị đầu cuối để lấy quyền truy cập vào nvm

  2. sau đó bạn cài đặt Node bằng lệnh đơn giản này:

    cài đặt nvm v6.6.0

    Bạn có thể muốn kiểm tra các phiên bản có sẵn bằng cách phát hành nvm ls-remotevà chọn phiên bản phù hợp với bạn

  3. bạn đặt phiên bản này làm mặc định nodecho hệ thống của mình:

    bí danh nvm mặc định v6.6.0

  4. và kiểm tra phiên bản đã cài đặt với node -vnpm -v


Bây giờ bạn đã cài đặt Node v6.6.0 cho người dùng hiện tại. Nó chưa có sẵn cho người dùng root hoặc người dùng khác trên hệ thống của bạn nhưng bạn có thể muốn điều đó để bạn có thể:

  • tạo liên kết tượng trưng (bí danh) để làm cho nó có sẵn trên toàn hệ thống:

    sudo ln -s /home/pi/.nvm/versions/node/v6.6.0/bin/node / usr / bin / nút

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

  • Hoặc , trong trường hợp hệ thống của bạn đã cài đặt nút theo mặc định và bạn gặp lỗi với phương thức trên (như trong trường hợp của tôi) chạy dòng khó xử này:

    n = $ (nút nào); n = $ {n% / bin / nút}; chmod -R 755 $ n / thùng / *; sudo cp -r $ n / {bin, lib, chia sẻ} / usr / cục bộ

và cài đặt mới của bạn nodehiện có sẵn cho mọi người cho phép bạn cài đặt các gói npm trên toàn cầu, v.v.

Xin lưu ý rằng bất cứ khi nào bạn muốn chuyển đổi phiên bản nút, bạn sẽ phải chạy lệnh trên (điều này có vẻ đáng sợ nhưng tất cả chỉ là sao chép các nodetệp vào /usr/local, nó được viết dưới dạng cô đọng).

Tôi hy vọng điều này sẽ giúp ai đó và tiết kiệm thời gian!


Người giới thiệu:

CÁCH CÀI ĐẶT NODE.JS TRÊN RASPBERRY PI của Brandon Cannaday,

bình luận đầu tiên từ bài viết trên (bởi RYAN PARSLEY),

câu trả lời StackOverflow này ,

hướng dẫn DigitalOcean đi kèm với /usr/localý tưởng sao chép,

và Internet và Google cho phép tôi dành hàng giờ cố gắng chọn giải pháp tốt nhất từ ​​đại dương ý tưởng :)


0

Theo bài đăng này , và cũng theo kinh nghiệm của riêng tôi, tất cả node.js được cài đặt sẵn Raspbian phiên bản đều lỗi thời. Do đó, tùy chọn tốt nhất của bạn là trước tiên xóa tất cả các cài đặt nút trước đó và cài đặt lại nó. Điều này cũng làm việc tuyệt vời cho Raspbian Stretch .

Làm cái này:

# 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

CẢNH BÁO

Một số kẻ ngốc đã đăng một sudo apt-get remove node*, phá hủy hệ điều hành. Không sử dụng ký tự đại diện vớiapt-get remove/purge , vì nó không được thiết kế để xử lý các ký tự đại diện. (Đó là may mắn thuần túy khi họ làm việc!)

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.