Встановіть Node.js на SD-карту для роботи на всіх моделях Pi


13

Я завантажую останню версію rasbian (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 я отримую "незаконну інструкцію".

Моє запитання: чи можна встановити копію Node.js на Pi, який працює на всіх моделях? Або v0.10.29 єдиний, який працює на всіх Pis?


Якщо ви завантажуєте джерела з випадкових веб-сайтів, ви повинні очікувати проблем. Чому ви вважаєте, що версія Node.js підходить для Raspberry Pi?
Жанна

Це НЕ випадковий веб-сайт, але там, де офіційні інструкції щодо встановлення вузлів вказують на вас. Відпочивайте дивіться мою відповідь.
Grmpfhmbl

Відповіді:


29

Причина, по якій це не працює на вашому Raspberry Pi 1, полягає в тому, що ці пакети складені для неправильного процесора - armhf (32-бітний жорсткий плаваючий ARM, ARMv7 і вище: arm-linux-gnueabihf)

Отже пакет повинен працювати на вашому Pi2, але не на Pi1. Я думаю, немає швидкого та простого способу отримати зображення, яке працює на обох. Якщо ви хочете встановити сучасний nodejs на свій Pi1, завантажте правильний тарбол із 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 / та створення символьних посилань у / usr / bin / .


дякую за вашу відповідь, я думаю, що я встановлю 2 nodejs (один armv6 і один armv7) і додаю послугу для створення на завантаженні символьної посилання на / usr / bin / node з правильним вузлом (в / usr / local / bin / node_armv6 або / usr / local / bin / node_armv7)
4Taine

Це спрацювало, чудово. вдалося встановити Node 7.7.4, встановлений на моєму Pi Zero W. Дякую!
Крайг Уокер

Хто читає це: Ви, мабуть, хочете останню версію вузла замість версії 6.2.1. Просто замініть номер версії всіх команд вище на обрану вами версію на nodejs.org/dist
Camp bell

6

В одному рядку коду, остання версія, для будь-якого малинового пі:

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

Це вирішило мою проблему щодо застарілих Nodejs в armv6 при установці зapt install
СтефансАрія

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" як root, а не bash, який запускає скрипт. Просто покладіть "sudo" після труби перед "bash".
Grmpfhmbl

1

У мене був такий самий випуск і я зробив кілька швидких скриптів bash для встановлення вузлів 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.