Instale o Node.js em um cartão SD para funcionar em todos os modelos Pi

13

Baixe a última versão raspbian (27/05/2016) em https://www.raspberrypi.org/downloads/raspbian/

O Node.js já está instalado com a versão 0.10.29, então eu a removi e a reinstalei com

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

Mas gostaria que meu cartão SD funcionasse em todos os modelos Raspberry Pi (Pi 1, 2, 3 e Zero). Atualmente, quando faço uma

node -v

em um Pi 1 ou em um Pi zero, recebo uma "instrução ilegal".

Minha pergunta é: É possível instalar uma cópia do Node.js em um Pi que funcione em todos os modelos? Ou a v0.10.29 é a única que funciona em todos os Pis?

4Taine
fonte
Se você baixar fontes de sites aleatórios, deve esperar problemas. O que faz você pensar que a versão do Node.js é adequada para o Raspberry Pi?
Joan
Este não é um site aleatório, mas onde as instruções oficiais de instalação do nodejs apontam para você. Descanse, veja minha resposta.
Grmpfhmbl

Respostas:

29

A razão pela qual isso não está funcionando no Raspberry Pi 1 é que esses pacotes são compilados para a CPU errada - armhf (hard-float ARM de 32 bits, ARMv7 e superior: arm-linux-gnueabihf)

Portanto, o pacote deve funcionar no seu Pi2, mas não no Pi1. Acho que não há uma maneira rápida e fácil de obter uma imagem que funcione nos dois. Se você deseja instalar um nodejs moderno em seu Pi1, faça o download do tarball correto em https://nodejs.org/dist/ Por exemplo:

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

O último comando deve ser impresso v6.2.1.

Agora você pode copiá-lo para / usr / local

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

Para testar, adicione / usr / local / bin ao seu caminho

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

Isso deve ser impresso 6.2.1e 3.9.3para as versões do nodejs e do npm. Se você precisar de uma versão diferente, basta escolher a que mais gosta nos downloads.

Não se esqueça de adicionar o PATH ao seu .bashrc para torná-lo permanente.

Para encontrar a arquitetura correta, você pode digitar cat /proc/cpuinfoum terminal e isso deve mostrar algo como

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

update Acabei de ver esta resposta /raspberrypi//a/37976/34825 que basicamente faz o mesmo que eu, exceto instalar o nó em / opt / e criar links simbólicos em / usr / bin / .

Grmpfhmbl
fonte
obrigado pela sua resposta, acho que instalarei 2 nodejs (um armv6 e um armv7) e adicionarei um serviço para criar na inicialização um link simbólico em / usr / bin / node com o nó correto (em / usr / local / bin / node_armv6 ou / usr / local / bin / node_armv7)
4Taine
Isso funcionou, ótimo. consegui instalar o nó 7.7.4 no meu Pi Zero W. Obrigado!
Kraig Walker
Para quem lê isso: Você provavelmente deseja a versão mais recente do nó, em vez da versão 6.2.1. Simplesmente substitua o número da versão em todos os comandos acima pela versão escolhida em nodejs.org/dist
Camp bell
6

Em uma linha de código, versão mais recente, para qualquer raspberry pi:

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

Código fonte: https://github.com/audstanley/NodeJs-Raspberry-Pi/

Audstanley
fonte
À primeira vista, parece não haver nenhuma verificação de sanidade no script. Eu seria muito cuidadoso em executar isso como root.
Grmpfhmbl 11/0318
Este foi resolver o meu problema sobre os NodeJS desatualizados em ARMv6 ao instalar comapt install
StefansArya
2

Gostei da solução de Audstanley acima, embora não tenha funcionado para mim imediatamente.

Eu descobri que precisava executar o script com acesso root.

Isso funcionou para mim:

sudo bash
sudo wget -O - https://raw.githubusercontent.com/audstanley/NodeJs-Raspberry-Pi/master/Install-Node.sh | bash
exit
node -v
DanielMuhlig
fonte
1
Não funcionou porque você executou o "wget" como root e não o bash que executa o script. Basta colocar o "sudo" após o cano na frente do "bash".
Grmpfhmbl 11/0318
1

Eu tive o mesmo problema e fiz alguns scripts bash rápidos para instalar o nó v4, v5 e v6.3.1:

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

Eles são para o Pi Zero, mas devem funcionar para todos os chips compatíveis com ARMv6 (1A 1B). De fato, isso deve funcionar nos chips ARMv7 (2B 3B), pois eles estão satisfeitos com os binários mais antigos .

Espero que você os ache úteis.

Steven de Salas
fonte
-1

Ou obtenha a versão mais recente:

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