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?


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 / .


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/


À 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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.