Grosse galère pour installer node-red sur raspberry OS

Bonjour,
je suis en train d’installer chez moi un système de régulation de l’alim du cumulus électrique en fonction de ma surproduction de panneaux photovoltaïque. J’ai aidé un ami à faire la partie soft sur node-red et ça tour chez lui.
Problème, impossible d’(installer node-red sur mon raspberry zero sur lequel j’ai mis le rapsberry os (version sans desktop). Je pense y avoir passé une bonne dizaine d’heures et n’avais pas imaginé que cette étape me poserait autant de soucis.
J’ai suivi la méthode du site nodered.ord mais j’ai une erreur lors de l’étape de l’installation de nodejs avec le commande "bash <(curl … "
J’ai la réponse que je poste en fin de message ; j’ai discuté un peu avec chat GPT qui m’a proposé de modifier les sources de paquets mais rien n’y fait.
Si quelqu’un a une idée, je suis preneur. Merci

«  »"
Running Node-RED install for user bertrand at /home/bertrand on raspbian

This can take 20-30 minutes on the slower Pi versions - please wait.

Stop Node-RED :heavy_check_mark:
Remove old version of Node-RED :heavy_check_mark:
Remove old version of Node.js :heavy_check_mark: v12.22.12
head: cannot open ‹ /tmp/node.tgz › for reading: No such file or directory
tar (child): /tmp/node.tgz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Install Node.js for Armv6 ✘ Bad install: Node.js missing Npm missing - Exitcut commands
Update systemd script

Any errors will be logged to /var/log/nodered-install.log

«  »"

J’ai aussi tenté un simple ‹ sudo apt install nodered ›, et il semble bien y avoir un problème de source puisque la commande est cromprise :

sudo apt install nodered
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following additional packages will be installed: …

et j’ai ensuite des erreurs lors du chargement :

… Need to get 23.9 MB/56.8 MB of archives.
After this operation, 275 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Err:2 Index of /raspbian bullseye/main armhf libdrm-radeon1 armhf 2.4.104-1+rpi1
Could not connect to distrib-coffee.ipsl.jussieu.fr:80 (134.157.176.20). - connect (113: No route to host)

Bon, analysons ça…

Une chose est sur, as tu actualisé le « apt » ? sudo apt update

Bon, si tu ne l’avait pas fait, refait tes tests (avec apt), sinon ont continue l’analyse.

  1. Ton premier post fournis quelques informations…

Alors ici ont comprend que « npm » et « nodejs » sont absents, alors ont remonte le log et

Le problème vient du fichier « node.tgz » qui est absent, analysons ce coup si le fichier d’installation…

Ligne 434;

curl -sSL -o /tmp/node.tgz https://unofficial-builds.nodejs.org/download/release/v$tgta/node-v$tgta-linux-armv6l.tar.gz 2>&1 | $SUDO tee -a /var/log/nodered-install.log >>/dev/null

La ligne 409 est pour la version X86, toi tu es sur ARM, alors c’est la ligne 434

Ce qui donne si je me fit au valeur du script : https://unofficial-builds.nodejs.org/download/release/v16.20.0/node-v16.20.0-linux-armv6l.tar.gz
Le lien marche, alors le script serait en mesure de télécharger le fichier et de le nommer « node.tgz ».

Mais en ligne 436, la lecture de l’entête donne une erreur;

Ce qui est la commande;

hd=$(head -c 6 /tmp/node.tgz)

Alors tu n’arrive pas a le télécharger. Si tu veux, tu peux #commenter a ligne 434, et télécharger et renommer le fichier correctement pour que le script saute cette partie et continue.

Sinon, ajoute un « ls /tmp » dans le scrit en ligne 435, pour voir le dossier. C’est une solution pour débugger.


Vérifie aussi les droits d’écriture, car si curl n’arrive pas a écrire dans « /tmp », le script qui suit en lignes 437-444 ne marcheras pas, car il fait une vérification en concevant que le fichier est télécharger, et est soit un tar.gz, ou un document html.

Merci pour cette analyse très complète et pédagogique ; j’apprécie réellement. Je me doutais bien qu’il y avait des informations à retirer de là mais je débute.
Alors les différents points :

  • J’avais bien fait les mises à jour des paquets par sudo apt-update et upgrade.
  • j’ai regardé le dossier /tmp il est bien accessible par tout le monde :
    ** drwxrwxrwt 10 root root 4096 Jun 10 13:08 tmp
    Je vais essayer de voir les différents points mais je manque un peu de temps pour le moment.
    Je posterai dès que j’aurai eu le temps que ce soit positif ou pas.
    Merci encore

Le fichier node.tgz est absent du dossier /tmp ; il ne l’a donc pas téléchargé ou écrit ; pourquoi, je ne comprends pas ; j’ai donc suivi le téléchargement manuel : voici ce que j’ai fait :

  • j’ai téléchargé le fichier « node-v16.20.0-linux-armv6l.tar.gz » que j’ai copié et renommé dans le dossier /tmp du pi :
  • j’ai téléchargé le script d’installation que j’ai modifié en commentant la ligne 434 et copié sous le nom « update-nodejs-and-nodered.txt » dans /tmp :

ls /tmp
node.tgz
systemd-private-87977ca6f2214bfb825e0828f6d51185-ModemManager.service-XXk7Hf
systemd-private-87977ca6f2214bfb825e0828f6d51185-systemd-logind.service-5TJSth
systemd-private-87977ca6f2214bfb825e0828f6d51185-systemd-timesyncd.service-bM4iph
update-nodejs-and-nodered.txt

  • j’ai lancé la commande : bash < /tmp/update-nodejs-and-nodered.txt
    et j’obtiens le message suivant :

bertrand@raspberrypi:~ $ bash < /tmp/update-nodejs-and-nodered.txt

This script checks the version of node.js installed is 14 or greater. It will try to
install node 16 if none is found. It can optionally install node 12, 14, 16 or 18 LTS for you.

If necessary it will then remove the old core of Node-RED, before then installing the latest
version. You can also optionally specify the version required.

It also tries to run ‹ npm rebuild › to refresh any extra nodes you have installed
that may have a native binary component. While this normally works ok, you need
to check that it succeeds for your combination of installed nodes.

To do all this it runs commands as root - please satisfy yourself that this will
not damage your Pi, or otherwise compromise your configuration.
If in doubt please backup your SD card first.

See the optional parameters by re-running this command with --help

bertrand@raspberrypi:~ $

  • Visiblement il me dit ce que le script doit faire mais ne fait rien …
  • une idée … ? Merci
  • j’ai bien relancé la commande en ajoutant --help mais ne voit pas comme la lancer le script de manière effective

bertrand@raspberrypi:~ $ bash < /tmp/update-nodejs-and-nodered.txt --help
GNU bash, version 5.1.4(1)-release-(arm-unknown-linux-gnueabihf)
Usage: bash [GNU long option] [option] …
bash [GNU long option] [option] script-file …
GNU long options:
–debug
–debugger
–dump-po-strings
–dump-strings
–help
–init-file
–login
–noediting
–noprofile
–norc
–posix
–pretty-print
–rcfile
–restricted
–verbose
–version
Shell options:
-ilrsD or -c command or -O shopt_option (invocation only)
-abefhkmnptuvxBCHP or -o option
Type bash -c "help set"' for more information about shell options.* *Type bash -c help’ for more information about shell builtin commands.
Use the `bashbug’ command to report bugs.

bash home page: http://www.gnu.org/software/bash
General help using GNU software: http://www.gnu.org/gethelp/

Ayoye…

Bon, premièrement tu n’aura rien avec « –help », car tu demande l’aide au « BASH » pas au script… car regarde bien c’est sont « aide » qui affiche.

Après, moi je run mes script avec « sh » et si besoin je l’exécute en SUDO.

sh scriptname.ext ou sudo sh scriptname.ex

Si le script à l’indicateur de format, qui commence par #!/bin/bash alors tu peux rendre le script exécutable avec chmod +x scriptname.ext, pour l’exécuer directement comme ceci ./scriptname.ext.

De plus, la manière que tu lance la commande n’est pas bon, car tu ajoute « < », qui dans ce cas indique plutot… de lancer le « bash », de lancer une commande dans ce bash et exécuter le résultat. mais de la manière tu fait, tu lance le bash et tu donne comme commande un nom de fichier. sont résultat sera une erreur. Retire le « < » et il va lancer le fichier comme un script.

L’usage d’un « > » ou « < » est souvent dans un cas pour rediriger un résultat vers autres choses. Comme ont lance une commande et « > » vers un /dev/null par exemple pour sortir aucune affichage. Dans le cas ici, tu t’es basé sur la commande de lancemen du scrip depuis le cURL, si ont regarde la commande tu as le curl dans une parenthèse après le « < ». Dans ce cas il exécue le curl, et la réponse sera traité dans la commande bash.


Vu que tu as été en mesure de copier le « node.tgz » requis, ton système n’est pas en Read-Only (Emergency state). Une bonne chose.

Juste pour être sur … tu as fait cette commande avant tout ?

sudo apt install build-essential git curl

Ok, merci, j’avance mais ce n’est pas encore fini :

  • Merci pour l’explication sur le « < »
  • j’avais bien installé les build-essential et installé sans retour d’erreur.
  • j’ai lancé un sudo sh update-… mais cela ne marche pas : il y a quelque chose que je fais mal car je n’ai pas d’autocomplétion sur sudo sh up…

bertrand@raspberrypi:/tmp $ sudo sh update-nodejs-and-nodered.txt
update-nodejs-and-nodered.txt: 138: function: not found

  • par contre, bash update-… fonctionne : j’ai enfin pu installer node.js mais node-red ne s’est pas installé, j’essaie de comprendre par moi même mais je ne vois pas trop la source de l’erreur sur le journal nodered-install.log que je copie dans le reste de ce post :

Running Node-RED install for user bertrand at /home/bertrand on raspbian

This can take 20-30 minutes on the slower Pi versions - please wait.

Stop Node-RED :heavy_check_mark:
Remove old version of Node-RED :heavy_check_mark:
Remove old version of Node.js :heavy_check_mark:
Install Node.js for Armv6 :heavy_check_mark: v16.20.0 Npm 8.19.4
Clean npm cache :heavy_check_mark:
Install Node-RED core ✘
Move global nodes to local -
Npm rebuild existing nodes :heavy_check_mark:
Install extra Pi nodes :heavy_check_mark:
Add shortcut commands :heavy_check_mark:
Update systemd script :heavy_check_mark:

Any errors will be logged to /var/log/nodered-install.log
All done.
You can now start Node-RED with the command node-red-start
or using the icon under Menu / Programming / Node-RED
Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880

Started : Sun 11 Jun 09:51:15 CEST 2023
Finished: Sun 11 Jun 09:58:21 CEST 2023


WARNING

DO NOT EXPOSE NODE-RED TO THE OPEN INTERNET WITHOUT SECURING IT FIRST

Even if your Node-RED doesn’t have anything valuable, (automated) attacks will
happen and could provide a foothold in your local network

Follow the guide at https://nodered.org/docs/user-guide/runtime/securing-node-r ed
to setup security.

ADDITIONAL RECOMMENDATIONS

  • Remove the /etc/sudoers.d/010_pi-nopasswd file to require entering your pass word
    when performing any sudo/root commands:

    sudo rm -f /etc/sudoers.d/010_pi-nopasswd

  • You can customise the initial settings by running:

    node-red admin init

  • After running Node-RED for the first time, change the ownership of the setti ngs
    file to ‹ root › to prevent unauthorised changes:

    sudo chown root:root ~/.node-red/settings.js


Would you like to customise the settings now (y/N) ?
bertrand@raspberrypi:/tmp $ node-red-start

Node-RED is not yet fully installed. Please re-run the install script again manu ally.

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/m aster/deb/update-nodejs-and-nodered)

then retry node-red-start

  • j’ai retenté un simple « sudo apt install nodered », la commande est comprise, il me propose d’installer mais à la fin j’ai toujours les erreurs du type que j’avais lors de mon premier essai

Ne tente pas d’installer nodered via « apt », de ce qui est indiqué sur leur site, la version fournis est ancienne et marche pas correctement avec la version de nodejs proposé sous RPi.

Les packages sur « apt » ne sont pas nécessairement à la dernières versions, surtout les logiciels. Ça s’explique par le déploiement et l’importance des MaJ qu’il apporte. Dépend aussi de d’autres facteurs. C’es pour ça que plusieurs propose plutôt d’utiliser leur script d’installation. Alors pour continuer, ont l’oublie, sauf si c’est un prérequis.


Ligne #138 du fichier « update-nodejs-and-nodered.txt » contient une commande « function » qui n’est pas valide. C’est que le script est codé que pour le format « bash ». Vu que tu exécute avec « sh », le script n’est pas correctement pris en charge. Alors remplace la commande « sh » par « bash ». Désolé de t’avoir confondu à ce sujet.


Le reste du log indique que le script en lui m-même a bien été exécuté, mais à la fin il détecte un problème. Il t’invite à réinstaller.

Idéalement serais de refaire de zéro avec ce que tu as appris. Surtout si tu es dans le début (rien d’autre d’installer d’important), tu es alors au meilleur moment pour recommencer.

Si tu opte pour cette option, refait ta carte SD. Si ont considère que le script est à jour, prend pas le « (Legacy) ».
Après avoir fait ton premier login, commence par mettre à jour le système proprement;

sudo apt update
sudo apt upgrade -y

Ceci actualise la liste des serveurs et packages, et après lance les mises à jours, le « -y » permet d’auto-confirmer l’installation.

Après installe leurs pré-requis plus mon edit;

sudo apt install build-essential git curl wget -y

Et fait un reboot avec

sudo reboot

Après, au lieu de lancer leur commande, fait ceci plutot;

wget ‐‐output-document=nodered-install.bh https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered
chmod +x ./nodered-install.bh

Ceci va créer un fichier « nodered-install.bh » dans le dossier courant et le rendre exécutable, c’est ton script pour l’installation. Lance le par la suite avec ceci;

./nodered-install.bh

Notes

  • Dans le script, je vois que tu peux définir des paramètres, qui semble être des questions posés lors de l’installation. Si tu veux voir les paramètres fait ./nodered-install.bh --help. SI tu n’as pas les questions, je crois faudra regardé les paramètres à utiliser, car il a des paramètres pour le RPi.
  • Ne change pas les accès aux dossiers/fichiers sans l’usage du script, pour par exemple éviter les problèmes avec « /tmp ».
  • Assure toi d’être connecté à internet (par exemple avec ping google.com), si possible en filaire pour plus de stabilité.
  • Si tu veux débugger le script d’installation, voici la version avec les # des lignes et du code couleur; https://github.com/node-red/linux-installers/blob/master/deb/update-nodejs-and-nodered
  • N’installe pas « nodejs » ni « npm » ou autres via « apt », si c’est le cas, « remove » les.
  • Lit attentivement les messages, fait les traduire par Google au besoin (oui c’est Anglais, mais RPi c’est majoritairement Anglo). Ils te donnent les informations pour t’aider à comprendre. Consulte les logs (il te donne les chemins dans les messages) et en passant, utilise la fonction « code » du forum pour les messages, ce sera plus facile de lire quand u les postes ici :slight_smile:

Bon, depuis le début je me demande quel version du Raspbian tu utilises. Car il à le Raspbian Lite (Legacy) et le même, mais sans le « (Legacy) », et ceci peut avoir un impact sur la capacité du système. Mais avant de fair ede quoi, informe moi juste sur ce point. Chaque version ont leur avantages et inconvénient à plusieurs égards au niveau logiciels.

Je sais que dans certains cas, installer de quoi sur la version Lite ne donne pas de bon résultats (comparé à la version Desktop ou Full, car des libs sont absents dans la version Lite par défaut). Je n’ai pas trouvé d’information à ce sujet sur leur site et les erreurs que tu as ne semble pas être relié à ça. Mais je te donne l’information.

C’est le Rapsberry OS Lite sans environnement graphique proposé par le Raspberry Pi Imager. Au départ, j’avais installé le Raspberry OS Full mais sans plus de succès, j’avais installé node-red via l’environnement graphique ; il semblait l’installer mais les commandes node-red restaient inconnues.
Si je n’arrive pas à l’installer, j’ai la solution de copier la micro sd d’un copain sur laquelle node-red tourne mais j’aime bien dépasser et surtout comprendre les obstacles mais je ne suis que débutant et pas super à l’aise en anglais.
J’ai déjà compris un certain nombre de choses avec ce que tu m’as expliqué, c’est déjà ça, merci

Je n’avais pas vu tes messages précédents, je pensais aussi refaire la carte SD, je n’ai rien d’essentiel.
Aurais tu un OS à me conseiller ?

Pour être plus précis sur ma version:
bertrand@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME=« Raspbian GNU/Linux 11 (bullseye) »
NAME=« Raspbian GNU/Linux »
VERSION_ID=« 11 »
VERSION=« 11 (bullseye) »
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian

Tu as la bonne version. Vu que je n’ai pas tout les logs etc… et me demande bien pourquoi tu n’y arrive pas, je suis mon guide et installe par moi-même pour comprendre.

RPI2 avec Raspbian OS Lite (non Legacy). Seul chose installer c’est des app pour GPS et une interface Graphique minimal pour Foxtrot.

Bon j’ai suivi mon guide et il marche pour le lancer, aux deux questions, j’ai dit « YES ».

Installation sans problème;

Running Node-RED install for user pi at /home/pi on raspbian


This can take 20-30 minutes on the slower Pi versions - please wait.

  Stop Node-RED                       ✔
  Remove old version of Node-RED      ✔
  Remove old version of Node.js       ✔
  Install Node.js 16 LTS              ✔   v16.20.0   Npm 8.19.4
  Clean npm cache                     ✔
  Install Node-RED core               ✔   3.0.2
  Move global nodes to local          -
  Npm rebuild existing nodes          ✔
  Install extra Pi nodes              ✔
  Add shortcut commands               ✔
  Update systemd script               ✔


Any errors will be logged to   /var/log/nodered-install.log

Et autre « proof »;

You can now start Node-RED with the command  node-red-start
  or using the icon under   Menu / Programming / Node-RED
Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880

Started :  Sun 11 Jun 14:39:12 EDT 2023
Finished:  Sun 11 Jun 14:44:09 EDT 2023

Alors tout s’installe et il n’y as aucun problème. Alors je te conseille vivement de refaire ta carte SD et de suivre mes commandes pour le faires;

sudo apt update
sudo apt upgrade -y
sudo apt install build-essential git curl wget -y
sudo reboot

wget --output-document=nodered-install.bh https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered
chmod +x ./nodered-install.bh
./nodered-install.bh

Observation…

Après l’isntall fait node-red admin init pour configurer quelques détails et par la suite node-red start, et ça marche!

  • Bon, j’ai réinstallé l’os et suivi scrupuleusement les 7 mêmes étapes (de « sudo apt update » à « ./nodered-install.bh ») toutes les étapes ont fonctionné mais j’obtiens la même erreur qu’au départ (cannot open /tmp/node.tgz)
  • dommage, j’y croyais, le problème est donc ailleurs, une idée peut être absurde tant je ne sais pas trop comment ça se passe. Tu es au Québec, a t’on les même ressources pour les installations ; je vois que pour certaines installations, il recherche des éléments sur les sites de Paris Jussieu ou l’Ircam tous deux en France. voir la dernière ligne de mon second message :
  • pas de fichier node.tgz dans /tmp dans lequel j’ai bien les droits pour écrire, je viens d’y créer un fichier essai

Running Node-RED install for user bertrand at /home/bertrand on raspbian

This can take 20-30 minutes on the slower Pi versions - please wait.

Stop Node-RED :heavy_check_mark:
Remove old version of Node-RED :heavy_check_mark:
Remove old version of Node.js :heavy_check_mark:
head: cannot open ‹ /tmp/node.tgz › for reading: No such file or directory
tar (child): /tmp/node.tgz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Install Node.js for Armv6 ✘ Bad install: Node.js missing Npm missing - Exitcut commands
Update systemd script

Any errors will be logged to /var/log/nodered-install.log

J’ai testé et le script marche. J’arrive à avoir le service Up et accéder au Web. J’ai jamais utilisé NodeRed avant.

Le script n’utilise pas Apt, il prend des libs dispo sur le net et les install. Les liens sont codé en dur.

Alors ton problème viens de quelque chose que tu fais mal, ou d’un problème avec ta carte SD.
Car je ne vois pas quoi qui t’empêche de l’installer correctement.

La seul chose qui reste à faire, qui est long et un peu complexe, est de traiter le script à la main, bref, le « lire » et copier les commandes une a une pour voir quoi qui ne marche pas exactement (et pourquoi ?)


Pour mon test;

  • Mon utilisateur pour l’install est « pi »
  • Fait en réseau WIfi
  • Aucune autre tâche que celle indiqué

Hum… en « Http » non sécurisé ? Change les « http » par « https », si le port est défini, change le « 80 » pour « 443 ». Sinon as tu un trouble réseau ? on routeur filtre -il les URL ? Utilise tu un DNS public comme Google (ce que j’encourage, et non celui du ISP).

Ok, je ne comprends pas non plus car je n’ai rien fait rien d’autre que ceux que tu as proposé.
Je vais essayer le changement de DNS et une autre carte SD.
Pas de souci de réseau, j’ai la fibre qui tourne très bien et le raspberry est en wifi à moins d’un mètre de la box.
Dans l’immédiat, je vais copier la carte SD du copain.
Je reposterai ici si je réussis à avancer.
Merci d’avoir pris de ton temps même si on n’y est pas parvenus et j’ai quand même compris certains éléments.

Bonjour, c’est encore moi.
Si ce n’est pas abusé, serait il possible de refaire l’installation de la carte SD avec le Raspberry OS lite et nodered, d’en faire une image et de la mettre sur un drive quelconque pour que je puisse la télécharger ? Mon copain vient de perdre son père et je ne sais pas trop quand est ce qu’il sortira la tête de l’eau.
Si tu n’as pas le temps ou l’envie, pas grave tu en as déjà assez fait.

Laisse moi quelques temps et je te fais ça. Il sera dispo sur mon serveur perso.

Le lien de téléchargement est; Téléchargement - levelKro.net - Download of rpi-nodered-32b-3.0.2.rar

684,7Mo - Avec un readme.
J’ai redimensionné la taille pour fitter sur du 4Gb et plus, faudra relancer l’outils pour maximiser l’espace. Je n’ai pas lancé le Node-Red, mais il est installé. Je te fournis une capture d’écran, il y a des détails important.

User/Pass: pi/raspberry (à changer bien sur)

Sinon pour faire plus rapide et facile à maintenir, installer docker pour lancer le tout à travers l’image docker officielle

https://nodered.org/docs/getting-started/docker