Instale a versão mais recente do nó no Pi 3

12

Configuração

Eu tenho um PI3 com Jessie. Segundo a Wikipedia, ele usa um ARM Cortex-A53 que é ARMv8-A.

Ao instalar o node.js usando este tutorial do adafruit, acabo com o nó v0.12que ainda está no estágio beta.

Questão:

Eu gostaria de usar, pelo menos, v4de node.js. Como instalo isso e o coloco em execução?

Abordagens com falha

Primeiro

Este tutorial descreve como fazê-lo.

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

A partir da v.4.0.0 Nosso conjunto de testes deve transmitir continuamente o ARMv6, o ARMv7 e os novos processadores ARMv8 de 64 bits.

V.5.0.0: ARMv8 binário de 64 bits:

=> Não é capaz de executar o binário. -bash: /usr/local/bin/node: cannot execute binary file: Exec format error

Segundo

https://github.com/nodesource/distributions#installation-instructions

Pára durante sudo apt-get install -y nodejs

Mas acho que eles ainda não têm suporte para a arm64 questão do 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)

Tópicos relacionados

Como instalar o node.js com o GPIO

Andi Giga
fonte
Atualmente, o Raspbian ( Stretch) mais recente do RPi3 ainda não é fornecido com suporte nativo ao armv8.
not2qubit

Respostas:

11

Instalei o node.js usando o segundo método da pergunta hoje, funcionou bem. Eu tenho Jessie Raspbian em um 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

Não sei por que esse método não funcionou para você. Talvez tenha sido atualizado e funcione melhor agora?

oldwizard
fonte
Não sei o que era, mas ele funciona agora muito bem quando eu reinstaladov6.x
Andi Giga
4

Como instalar

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

Por que ArmV7:

No meu pi & pacote está escrito Raspberry Pi 3 Model Be de acordo com a wikipedia : o The ARM Cortex-A53 is a microarchitecture implementing the ARMv8-A 64-bitque me levou a baixar o arquivo ARMv8 64-bit Binary.

Mas o pi mostra com uname -a Linux raspberrypi 4.1.14-v7+ #4 SMP PREEMPT Wed Mar 23 15:30:13 UTC 2016 armv7l GNU/Linux. Então, aparentemente, há um armv7no pi.

EDIT: Parece estar correto https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=140572

O modo de 32 bits é usado, devido ao suporte ausente do sistema operacional, pelo que entendi. Se alguém puder explicar isso com mais precisão, deixe um comentário.

Andi Giga
fonte
O Debian tem uma arm64versão aqui ( debian.org/CD/netinst ), mas ainda não consegui inicializá-la.
ott--
3

Usando nvm

Uma solução alternativa está usando o nvm como o instalador do Node. nvmsignifica Node Version Manager e possui muitos benefícios, como:

  • escolhendo a versão certa para sua plataforma,
  • atualize facilmente o Node com um comando simples,
  • nodeversões diferentes instaladas ao mesmo tempo (para verificar seu programa com versões diferentes do nó para testar a implantação em configurações diferentes, por exemplo)

Enquanto eu era cético no começo (embora eu use com nvmsucesso em outros sistemas), depois de procurar a melhor solução para ter nodee npminstalar e acessível para todos os usuários (incluindo root , que é necessário para acessar o hardware no RasPi) e mergulhar em todos os nós distribuições, pacotes e fontes, decidi experimentar este método. E funcionou!


Aqui estão os meus passos:

  1. Antes de tudo, você precisa instalar o nvm . Você pode executar esse script na sua pasta pessoal ou em qualquer outro lugar, mas ele será instalado nvmpara o usuário atual ( pi no meu caso, embora eu tenha criado outro para esse fim, o que agora é desnecessário). Você pode substituir a versão (v0.32.0) pela mais recente.

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

    Você precisa reabrir o terminal para obter acesso ao nvm

  2. então você instala o Node com este comando simples:

    nvm install v6.6.0

    Convém verificar as versões disponíveis emitindo nvm ls-remotee escolher a que mais lhe convém

  3. você define esta versão como padrão nodepara o seu sistema:

    nvm alias default v6.6.0

  4. e verifique a versão instalada com node -venpm -v


Agora você tem o Node v6.6.0 instalado para o usuário atual. Ele ainda não está disponível para root ou outros usuários no seu sistema, mas você pode desejar isso para:

  • crie links simbólicos (aliases) para disponibilizá-lo em todo o sistema:

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

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

  • Ou , caso seu sistema já possua um nó instalado por padrão e você receba um erro com o método acima (como no meu caso), execute esta linha estranha:

    n = $ (qual nó); n = $ {n% / bin / nó}; chmod -R 755 $ n / bin / *; sudo cp -r $ n / {bin, lib, compartilhamento} / usr / local

e seu recém instalado nodeagora está disponível para todos, permitindo que você instale pacotes npm globalmente etc.

Observe que sempre que você quiser alternar a versão do nó, será necessário executar o comando acima (que pode parecer assustador, mas tudo o que faz é copiar os nodearquivos e gravá- /usr/locallos em formato condensado).

Espero que isso ajude alguém e economize algum tempo!


Referências:

COMO INSTALAR O NODE.JS NO FRAMBOESA PI by Brandon Cannaday,

o primeiro comentário do post acima (por RYAN PARSLEY),

esta resposta StackOverflow ,

o tutorial do DigitalOcean que veio com a /usr/localideia de cópia,

e a Internet e o Google, que me permitiram passar horas tentando escolher a melhor solução em um oceano de idéias :)

bosch
fonte
0

De acordo com este post, e também na minha própria experiência, todas as versões do node.js pré-instaladas pelo Raspbian estão desatualizadas. Portanto, sua melhor opção é remover todas as instalações de nós anteriores e reinstalá-lo. Isso também funcionou muito bem para o Raspbian Stretch .

Faça isso:

# 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

ATENÇÃO

Algum idiota postou um sudo apt-get remove node*, que destruiu o sistema operacional. Não use curingas comapt-get remove/purge , pois ele não foi projetado para lidar com curingas. (É pura sorte quando eles funcionam!)

not2qubit
fonte