Installa la versione del nodo più recente su Pi 3


12

Impostare

Ho un PI3 con Jessie. Secondo Wikipedia utilizza un ARM Cortex-A53 che lo è ARMv8-A.

Quando installo node.js usando questo tutorial di adafruit finisco con il nodo v0.12che è ancora in fase beta.

Domanda:

Vorrei utilizzare almeno v4di node.js. Come posso installarlo e farlo funzionare?

Approcci falliti

Primo

Questo tutorial descrive come farlo.

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

Dalla v.4.0.0 La nostra suite di test deve trasmettere continuamente ARMv6, ARMv7 e i nuovi processori ARMv8 a 64 bit.

V.5.0.0: ARMv8 binario a 64 bit:

=> Non è in grado di eseguire il binario. -bash: /usr/local/bin/node: cannot execute binary file: Exec format error

Secondo

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

Si ferma durante sudo apt-get install -y nodejs

Ma penso che non abbiano ancora supporto per il arm64 problema di 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)

Argomenti correlati

Come installare node.js con GPIO


Ad oggi, l'ultimo Raspbian ( Stretch) di RPi3 non è ancora fornito con supporto nativo per armv8.
not2qubit

Risposte:


11

Ho installato node.js usando il secondo metodo nella domanda oggi, ha funzionato bene. Ho Raspbian Jessie su un 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

Non so perché quel metodo non abbia funzionato per te. Forse è stato aggiornato e funziona meglio ora?


Non so cosa fosse ma ora funziona bene quando ho reinstallatov6.x
Andi Giga

4

Come installare

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

Perché ArmV7:

Sul mio pi & pacchetto è scritto Raspberry Pi 3 Model Be secondo Wikipedia : The ARM Cortex-A53 is a microarchitecture implementing the ARMv8-A 64-bitche mi ha portato a scaricare il ARMv8 64-bit Binary.

Ma il pi mostra con uname -a Linux raspberrypi 4.1.14-v7+ #4 SMP PREEMPT Wed Mar 23 15:30:13 UTC 2016 armv7l GNU/Linux. Quindi a quanto pare c'è un armv7nel pi.

EDIT: sembra essere corretto https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=140572

La modalità a 32 bit viene utilizzata, a causa del supporto mancante del sistema operativo, dalla mia comprensione. Se qualcuno può spiegarlo in modo più preciso, lascia un commento.


Debian ha una arm64versione qui ( debian.org/CD/netinst ) ma non sono ancora riuscito ad avviarla.
ott--

3

Usando nvm

Una soluzione alternativa sta usando nvm come programma di installazione per Node. nvmsta per Node Version Manager e ha molti vantaggi come:

  • scegliendo la versione giusta per la tua piattaforma,
  • aggiorna facilmente Nodo con un semplice comando,
  • nodeversioni diverse installate contemporaneamente (per verificare il programma con versioni diverse del nodo per testare la distribuzione in diverse configurazioni, ad esempio)

Mentre ero scettico all'inizio (anche se io uso nvmcon successo su altri sistemi), dopo aver cercando la soluzione migliore per avere nodee npminstallato e accessibile per tutti gli utenti (tra cui radice , che è necessario per l'hardware di accesso sul Raspi) e immersioni in tutti i nodi distribuzioni, pacchetti e fonti, ho deciso di provare questo metodo. E ha funzionato!


Ecco i miei passi:

  1. prima di tutto, devi installare nvm . È possibile eseguire questo script dalla cartella casa o in qualsiasi altro luogo, ma verrà installato nvmper l'utente corrente ( PI nel mio caso anche se ho avuto un altro creato per questo scopo che è ormai inutile). È possibile che si desideri sostituire la versione (v0.32.0) con la più recente.

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

    È necessario riaprire il terminale per accedere a nvm

  2. quindi installi Nodo con questo semplice comando:

    nvm install v6.6.0

    Potresti voler controllare le versioni disponibili emettendo nvm ls-remotee scegliere quella più adatta a te

  3. imposti questa versione come predefinita nodeper il tuo sistema:

    nvm alias default v6.6.0

  4. e controlla la versione installata con node -venpm -v


Ora hai Node v6.6.0 installato per l'utente corrente. Non è ancora disponibile per i root o altri utenti sul tuo sistema, ma potresti volerlo così puoi:

  • creare collegamenti simbolici (alias) per renderlo disponibile a livello di 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

  • Oppure , nel caso in cui il tuo sistema abbia già il nodo installato per impostazione predefinita e ricevi un errore con il metodo sopra (come nel mio caso) esegui questa riga scomoda:

    n = $ (quale nodo); n = $ {n% / bin / node}; chmod -R 755 $ n / bin / *; sudo cp -r $ n / {bin, lib, share} / usr / local

e il tuo appena installato nodeè ora disponibile a tutti, permettendoti di installare pacchetti npm a livello globale, ecc.

Si noti che ogni volta che si desidera cambiare la versione del nodo, sarà necessario eseguire il comando sopra (che può sembrare spaventoso, ma tutto ciò che fa è copiare i nodefile /usr/local, è scritto in forma ridotta).

Spero che questo aiuti qualcuno e faccia risparmiare tempo!


Riferimenti:

COME INSTALLARE NODE.JS SU RASPBERRY PI di Brandon Cannaday,

il primo commento dal post sopra (di RYAN PARSLEY),

questa risposta StackOverflow ,

il tutorial di DigitalOcean fornito con l' /usr/localidea di copia,

e Internet e Google che mi hanno permesso di passare ore cercando di scegliere la migliore soluzione da un oceano di idee :)


0

Secondo questo post, e anche per esperienza personale, tutte le versioni di node.js preinstallate di Raspbian sono obsolete. L'opzione migliore è quindi innanzitutto rimuovere tutte le precedenti installazioni di nodi e reinstallarle. Anche questo ha funzionato alla grande con Raspbian Stretch .

Fai questo:

# 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

AVVERTIMENTO

Qualche idiota ha pubblicato un sudo apt-get remove node*, che ha distrutto il sistema operativo. Non utilizzare caratteri jolly conapt-get remove/purge , poiché non è stato progettato per gestire i caratteri jolly. (È pura fortuna quando funzionano!)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.