Jump to content

Попытка установки Node-RED (Графический конфигуратор для интернета вещей)


Recommended Posts

Приветствую всех !

Стоит задача установить Node-RED - Графический конфигуратор для интернета вещей.

1. Скачиваю здесь пакеты:

-             v8.16.1-1    lang        Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

- node-npm    v8.16.1-1    lang        NPM is the package manager for NodeJS

2. Устанавливаю их:

- вначале node

- потом node-npm (менеджер пакетов)

3. Скачиваю здесь пакет node-red-1.0.2.tar.gz

А вот как его установить ?

Ресурс указывает делать так: 

sudo npm install -g --unsafe-perm node-red

 при этом комментируя: Примечание: Команда «sudo» нужна только при установке на Linux и OS X.

А как действовать мне ?

И вообще этот пакет Node-RED можно установить на Entware ?

 

Link to comment
Share on other sites

Вот ещё нашёл:
If you are on a Raspberry Pi or any Debian-based operating system, including Ubuntu and Diet-Pi, you can use the Pi install script available here.
If you are on an RPM-based operating system, including RedHat, Fedora and CentOS, you can use the RPM install script available here.
Как я понимаю Entware не относится ни к одним, ни к другим.
Так ?

Installing with npm

To install Node-RED you can use the npm command that comes with node.js:

sudo npm install -g --unsafe-perm node-red

 

Link to comment
Share on other sites

Это не просто, а очень просто!

Скрытый текст

 


BusyBox v1.31.0 () built-in shell (ash)

~ # opkg update
Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/keendev
~ # opkg install node-npm
Installing node-npm (v8.16.1-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/node-npm_v8.16.1-1_mipsel-3.4.ipk
Installing libnghttp2 (1.39.2-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libnghttp2_1.39.2-1_mipsel-3.4.ipk
Installing libuv (1.32.0-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libuv_1.32.0-1_mipsel-3.4.ipk
Installing libhttp-parser (2.9.2-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libhttp-parser_2.9.2-2_mipsel-3.4.ipk
Installing node (v8.16.1-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/node_v8.16.1-1_mipsel-3.4.ipk
Configuring libnghttp2.
Configuring libuv.
Configuring libhttp-parser.
Configuring node.
Configuring node-npm.
~ # 

ставим "node-red"


~ # 
~ # npm install -g --unsafe-perm node-red
/opt/bin/node-red -> /opt/lib/node_modules/node-red/red.js
/opt/bin/node-red-pi -> /opt/lib/node_modules/node-red/bin/node-red-pi

> bcrypt@3.0.6 install /opt/lib/node_modules/node-red/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build

sh: node-pre-gyp: not found
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@3.0.6 (node_modules/node-red/node_modules/bcrypt):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@3.0.6 install: `node-pre-gyp install --fallback-to-build`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: spawn ENOENT

+ node-red@1.0.2
added 294 packages from 304 contributors in 281.719s
~ # 

и сразу ищем, что подправить ('bash' перекрывается 'sh', но, для наглядности, пущай будет)


~ # 
~ # find /opt/lib/node_modules/node-red/ -type f | xargs grep -E "^#!.*(bash|node|perl|python|ruby|sh)$"
/opt/lib/node_modules/node-red/red.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/semver/bin/semver.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/publish-built-version:#!/usr/bin/env bash
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/travis-gh-pages:#!/usr/bin/env bash
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/info:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env sh
/opt/lib/node_modules/node-red/node_modules/esprima/bin/esvalidate.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/esprima/bin/esparse.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/nopt/examples/my-program.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/nopt/bin/nopt.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/sshpk/bin/sshpk-sign:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/sshpk/bin/sshpk-verify:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/sshpk/bin/sshpk-conv:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/dashdash/etc/dashdash.bash_completion.in:#!/bin/bash
/opt/lib/node_modules/node-red/node_modules/mime/cli.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/mime/src/build.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/mqtt/mqtt.js:#!/usr/bin/env node
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/tls-key.pem: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/crt.ca.cg.pem: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/mqttclient.js: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/tls-cert.pem: No such file or directory
/opt/lib/node_modules/node-red/node_modules/mqtt/bin/sub.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/mqtt/bin/pub.js:#!/usr/bin/env node
grep: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/abcde: No such file or directory
grep: hello.txt: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/abcde: No such file or directory
grep: fghi: No such file or directory
grep: lmno.txt: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/hello: No such file or directory
grep: world.txt: No such file or directory
/opt/lib/node_modules/node-red/node_modules/uuid/bin/uuid:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/uglify-js/bin/uglifyjs:#! /usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/mkdirp/bin/cmd.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/js-yaml/bin/js-yaml.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/mustache/bin/mustache:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/send/node_modules/mime/cli.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/send/node_modules/mime/src/build.js:#!/usr/bin/env node
/opt/lib/node_modules/node-red/bin/node-red-pi:#!/bin/bash
~ # 

правим


~ # 
~ # find /opt/lib/node_modules/node-red/ -type f | xargs sed -i -e "1s,^#!.*bash$,#!/opt/bin/bash,;1s,^#!.*node$,#!/opt/bin/node,"
sed: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
sed: client/tls-key.pem: No such file or directory
sed: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
sed: client/crt.ca.cg.pem: No such file or directory
sed: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
sed: client/mqttclient.js: No such file or directory
sed: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
sed: client/tls-cert.pem: No such file or directory
sed: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/abcde: No such file or directory
sed: hello.txt: No such file or directory
sed: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/abcde: No such file or directory
sed: fghi: No such file or directory
sed: lmno.txt: No such file or directory
sed: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/hello: No such file or directory
sed: world.txt: No such file or directory
~ # 

проверяем, что вышло


~ # 
~ # find /opt/lib/node_modules/node-red/ -type f | xargs grep -E "^#!.*(bash|node|perl|python|ruby|sh)$"
/opt/lib/node_modules/node-red/red.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/semver/bin/semver.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/publish-built-version:#!/opt/bin/bash
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/travis-gh-pages:#!/opt/bin/bash
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/info:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env sh
/opt/lib/node_modules/node-red/node_modules/esprima/bin/esvalidate.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/esprima/bin/esparse.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/nopt/examples/my-program.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/nopt/bin/nopt.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/sshpk/bin/sshpk-sign:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/sshpk/bin/sshpk-verify:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/sshpk/bin/sshpk-conv:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/dashdash/etc/dashdash.bash_completion.in:#!/opt/bin/bash
/opt/lib/node_modules/node-red/node_modules/mime/cli.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/mime/src/build.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/mqtt/mqtt.js:#!/opt/bin/node
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/tls-key.pem: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/crt.ca.cg.pem: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/mqttclient.js: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/mqtt/examples/tls: No such file or directory
grep: client/tls-cert.pem: No such file or directory
/opt/lib/node_modules/node-red/node_modules/mqtt/bin/sub.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/mqtt/bin/pub.js:#!/opt/bin/node
grep: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/abcde: No such file or directory
grep: hello.txt: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/abcde: No such file or directory
grep: fghi: No such file or directory
grep: lmno.txt: No such file or directory
grep: /opt/lib/node_modules/node-red/node_modules/help-me/fixture/shortnames/hello: No such file or directory
grep: world.txt: No such file or directory
/opt/lib/node_modules/node-red/node_modules/uuid/bin/uuid:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/uglify-js/bin/uglifyjs:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/mkdirp/bin/cmd.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/js-yaml/bin/js-yaml.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/mustache/bin/mustache:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/send/node_modules/mime/cli.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/send/node_modules/mime/src/build.js:#!/opt/bin/node
/opt/lib/node_modules/node-red/bin/node-red-pi:#!/opt/bin/bash
~ # 

осталось исправить


/opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env sh

 

 

 

  • Thanks 3
Link to comment
Share on other sites

2 часа назад, TheBB сказал:

ставим "node-red"

Выполнил всё до этого пункта. Сделал резервную копию.

А дальше вопросы:

1. Откуда возьмётся дистрибутив node-red, автоматом скачается из инета ?

2. А почему возникают ошибки ?

3. Можно ли сделать так, чтобы не было ошибок ?

4. Может здесь, что-то полезное: 

Скачайте нужную вам версию

Вы можете сразу скачать последнюю или любую другую версию Node-RED отсюда. В скачанном ZIP-архиве будет папка верхнего уровня под названием «node-red-X.Y.Z», где «X.Y.Z» – это номер версии Node-RED. Распаковав архив и будучи в папке верхнего уровня, запустите вот эту команду:

npm install --production

Скачайте с GitHub (для разработчиков)

GitHub-код предназначен только для тех, кто хочет использовать код для разработки, или для разработчиков, которые хотят внести вклад в код Node-RED. Вы можете клонировать репозиторий исходного кода прямо с GitHub:

git clone https://github.com/node-red/node-red.git

После клонирования необходимо установить необходимые модули ядра:

cd node-red
npm install

Примечание: Чтобы вы могли запустить код, клонированный из Git-репозитория, вам необходимо установить все зависимости, а не только те, что непосредственно используются в проекте. Поэтому флаг «--production» использовать не нужно.

Вам также нужно будет установить Grunt CLI (grunt-cli), чтобы собрать приложение перед тем, как воспользоваться им. Это тоже нужно делать глобально.

sudo npm install -g grunt-cli

После этого собираем и запускаем приложение:

grunt build
npm start
Link to comment
Share on other sites

1. т.е. даже не пытались повторить?

2. какие?

3. см. п.2

4. для кого?

Скрытый текст

продолжаем изголяться


BusyBox v1.31.0 () built-in shell (ash)

~ # opkg install bash
Installing bash (5.0-3) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/bash_5.0-3_mipsel-3.4.ipk
Configuring bash.
~ # 
~ # sed -i -e 's,/usr/bin/env node,/opt/bin/node,' /opt/lib/node_modules/node-red/bin/node-red-pi 
~ # 
~ # /opt/lib/node_modules/node-red/bin/node-red-pi 
16 Oct 13:13:23 - [info] 

Welcome to Node-RED
===================

16 Oct 13:13:23 - [info] Node-RED version: v1.0.2
16 Oct 13:13:23 - [info] Node.js  version: v8.16.1
16 Oct 13:13:23 - [info] Linux 4.9-ndm-3 mipsel LE
16 Oct 13:13:31 - [info] Loading palette nodes
16 Oct 13:13:40 - [info] Settings file  : /opt/root/.node-red/settings.js
16 Oct 13:13:40 - [info] Context store  : 'default' [module=memory]
16 Oct 13:13:40 - [info] User directory : /opt/root/.node-red
16 Oct 13:13:40 - [warn] Projects disabled : editorTheme.projects.enabled=false
16 Oct 13:13:40 - [info] Flows file     : /opt/root/.node-red/flows_Keenetic_Ultra.json
16 Oct 13:13:41 - [info] Creating new flow file
16 Oct 13:13:41 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

16 Oct 13:13:41 - [info] Starting flows
16 Oct 13:13:41 - [info] Started flows
16 Oct 13:13:41 - [info] Server now running at http://127.0.0.1:1880/
^C16 Oct 13:15:27 - [info] Stopping flows
16 Oct 13:15:27 - [info] Stopped flows

^Ctrl+C

 


~ # node
node         node-red     node-red-pi
~ # node-red
16 Oct 13:15:55 - [info] 

Welcome to Node-RED
===================

16 Oct 13:15:55 - [info] Node-RED version: v1.0.2
16 Oct 13:15:55 - [info] Node.js  version: v8.16.1
16 Oct 13:15:55 - [info] Linux 4.9-ndm-3 mipsel LE
16 Oct 13:16:02 - [info] Loading palette nodes
16 Oct 13:16:12 - [info] Settings file  : /opt/root/.node-red/settings.js
16 Oct 13:16:12 - [info] Context store  : 'default' [module=memory]
16 Oct 13:16:12 - [info] User directory : /opt/root/.node-red
16 Oct 13:16:12 - [warn] Projects disabled : editorTheme.projects.enabled=false
16 Oct 13:16:12 - [info] Flows file     : /opt/root/.node-red/flows_Keenetic_Ultra.json
16 Oct 13:16:12 - [info] Creating new flow file
16 Oct 13:16:12 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

16 Oct 13:16:12 - [info] Starting flows
16 Oct 13:16:12 - [info] Started flows
16 Oct 13:16:12 - [info] Server now running at http://127.0.0.1:1880/

screen-2019-10-16-nodered.png

 

 

 

  • Upvote 1
Link to comment
Share on other sites

29 минут назад, TheBB сказал:

1. т.е. даже не пытались повторить?

1. Честно сказать страшновато стало после появления этих строк

4 часа назад, TheBB сказал:

sh: node-pre-gyp: not found

 

4 часа назад, TheBB сказал:

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@3.0.6 (node_modules/node-red/node_modules/bcrypt):

и ещё пары похожих.

Правильно ли я понял, что устанавливать и потом править надо командами:

npm install -g --unsafe-perm node-red

find /opt/lib/node_modules/node-red/ -type f | xargs sed -i -e "1s,^#!.*bash$,#!/opt/bin/bash,;1s,^#!.*node$,#!/opt/bin/node,"

/opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env sh
33 минуты назад, TheBB сказал:

2. какие?

2. Вы правы - лучше назвать это предупреждениями.

34 минуты назад, TheBB сказал:

3. см. п.2

3. Можно ли сделать так, чтобы не было предупреждений ?

35 минут назад, TheBB сказал:

4. для кого?

4. Для того, кто может сможет сделать без установку node-red без выдачи предупреждений

41 минуту назад, TheBB сказал:

продолжаем изголяться

Спасибо Вам, но какой из Ваших двух вариантов запуска ранее установленного Node-Red надо использовать:

~ # sed -i -e 's,/usr/bin/env node,/opt/bin/node,' /opt/lib/node_modules/node-red/bin/node-red-pi 
~ # /opt/lib/node_modules/node-red/bin/node-red-pi 

ИЛИ

~ # node
~ # node-red
Link to comment
Share on other sites

Решился устанавливать, Отдал команду и получил ошибку:

~ # npm install -g --unsafe-perm node-red
/opt/bin/node: error while loading shared libraries: libc.so.0: cannot open shared object file: No such file or directory

Может надо вместо npm указывать node-npm ?

И снова становится уместным мой вопрос: 1. Откуда возьмётся дистрибутив node-red, автоматом скачается из инета ?

Edited by iFinder
Link to comment
Share on other sites

1 минуту назад, zyxmon сказал:

Если `opkg update; opkg upgrade` не помогает

Скажите пожалуйста мне надо скачивать дистрибутив node-red для его установки ?

Link to comment
Share on other sites

По совету zyxmon сделал обновление:

~ # opkg update
~ # opkg upgrade

Были ошибки, поэтому повторил ещё пару раз. Получилось.

Далее, не скачивая дистрибутив, установил Node-RED

~ # npm install -g --unsafe-perm node-red

По окончании отобразилось тоже самое, что и у TheBB :

~ # npm install -g --unsafe-perm node-red
/opt/bin/node-red -> /opt/lib/node_modules/node-red/red.js
/opt/bin/node-red-pi -> /opt/lib/node_modules/node-red/bin/node-red-pi

> bcrypt@3.0.6 install /opt/lib/node_modules/node-red/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build

sh: node-pre-gyp: not found
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@3.0.6 (node_modules/node-red/node_modules/bcrypt):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@3.0.6 install: `node-pre-gyp install --fallback-to-build`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: spawn ENOENT

+ node-red@1.0.2
added 294 packages from 304 contributors in 483.73s

 

Link to comment
Share on other sites

5. В чём причина Предупреждений ?

6. Каковы могут быть последствия их игнорирования ?

7. В чём суть поиска и правки, которую выполнил TheBB ?

8. Надо ли мне тоже повторять этот поиски или сразу выполнить правку:

find /opt/lib/node_modules/node-red/ -type f | xargs sed -i -e "1s,^#!.*bash$,#!/opt/bin/bash,;1s,^#!.*node$,#!/opt/bin/node,"

/opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env sh

9. Каким из двух вариантов запускать Node-RED:

~ # sed -i -e 's,/usr/bin/env node,/opt/bin/node,' /opt/lib/node_modules/node-red/bin/node-red-pi 
~ # /opt/lib/node_modules/node-red/bin/node-red-pi 

ИЛИ

~ # node
~ # node-red
Link to comment
Share on other sites

5. не найден (см. https://github.com/mapbox/node-pre-gyp#readme для чего нужен; если необходим, см. https://github.com/Entware/Entware/wiki/Using-GCC-for-native-compilation и все смежные темы + python )

Цитата

sh: node-pre-gyp: not found

в виду п.5 не будет установлен (опционально)

Скрытый текст

для сборки, см. п.5:


~ # npm install -g --unsafe-perm node-red
/opt/bin/node-red -> /opt/lib/node_modules/node-red/red.js
/opt/bin/node-red-pi -> /opt/lib/node_modules/node-red/bin/node-red-pi

> bcrypt@3.0.6 install /opt/lib/node_modules/node-red/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using needle for node-pre-gyp https download 
node-pre-gyp WARN Pre-built binaries not installable for bcrypt@3.0.6 and node@8.16.1 (node-v57 ABI, unknown) (falling back to source compile with node-gyp) 
node-pre-gyp WARN Hit error getaddrinfo EAI_AGAIN github.com:443 
make: Entering directory '/opt/lib/node_modules/node-red/node_modules/bcrypt/build'
  CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
  CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
  CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o
  SOLINK_MODULE(target) Release/obj.target/bcrypt_lib.node
  COPY Release/bcrypt_lib.node
  COPY /opt/lib/node_modules/node-red/node_modules/bcrypt/lib/binding/bcrypt_lib.node
  TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/opt/lib/node_modules/node-red/node_modules/bcrypt/build'
+ node-red@1.0.2
added 37 packages from 42 contributors and updated 1 package in 252.898s
~ # 

 

Цитата

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt@3.0.6 (node_modules/node-red/node_modules/bcrypt):

6. время покажет; не пользовался, не пользуюсь и пользоваться не собираюсь

7. суть - найти и исправить пути с `/usr` на `/opt`

8. по желанию

9. любым

~ # node-red
16 Oct 19:47:20 - [info] 

Welcome to Node-RED
===================

16 Oct 19:47:20 - [info] Node-RED version: v1.0.2
...

# или, если выполнили `sed -i -e 's,/usr/bin/env node,/opt/bin/node,' /opt/lib/node_modules/node-red/bin/node-red-pi`
~ # node-red-pi 
16 Oct 19:49:41 - [info] 

Welcome to Node-RED
===================

16 Oct 19:49:41 - [info] Node-RED version: v1.0.2
...

# или даже так (см. предыдущий, нужно с `sed...`)
~ # /opt/lib/node_modules/node-red/red.js 
16 Oct 19:52:23 - [info] 

Welcome to Node-RED
===================

16 Oct 19:52:23 - [info] Node-RED version: v1.0.2
...

 

  • Upvote 1
Link to comment
Share on other sites

Исчерпывающие ответы. В очередной раз благодарен Вам, уважаемый TheBB !

Сделал как Вы указали. На каждом этапе контролировал состояние, но в конце получил ошибку.

~ # find /opt/lib/node_modules/node-red/ -type f | xargs sed -i -e "1s,^#!.*bash$,#!/opt/bin/bash,;1s,^#!.*node$,#!/opt/bin/node,"
~ # /opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env sh
-sh: /opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env: not found

И, кстати, в Вашем примере остались `/usr`, не заменённые на `/opt`, например:

/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node

Как устранить ошибку, что не так ?

Link to comment
Share on other sites

Ну вот и остался последний этап - Запуск Node-RED при загрузке:

Вот, что накопал в инете:

Using PM2

PM2 is a process manager for Node.js. It makes it easy to run applications on boot and ensure they are restarted if necessary.

Скрытый текст

 

1. Install PM2


sudo npm install -g pm2

Note : sudo is required if running as a non-root user on Linux or OS X. If running on Windows, you will need to run in a command shell as Administrator, without the sudo command.

If running on Windows, you should also ensure tail.exe is on your path, as described here.

2. Determine the exact location of the node-red command.

If you have done a global install of node-red, then on Linux/OS X the node-red command will probably be either: /usr/bin/node-red or /usr/local/bin/node-red. The command which node-red can be used to confirm the location.

If you have done a local install, it will be node_modules/node-red/bin/node-red, relative to where you ran npm install from.

3. Tell PM2 to run Node-RED

The following command tells PM2 to run Node-RED, assuming /usr/bin/node-red as the location of the node-red command.

The -- argument must appear before any arguments you want to pass to node-red.


pm2 start /usr/bin/node-red -- -v

Note : if you are running on a device like the Raspberry Pi or BeagleBone Black that have a constrained amount of memory, you must pass an additional argument:

pm2 start /usr/bin/node-red --node-args="--max-old-space-size=128" -- -v

Note : if you want to run as the root user, you must use the `--userDir` option to specify where Node-RED should store your data.

This will start Node-RED in the background. You can view information about the process and access the log output using the commands:

pm2 info node-red

pm2 logs node-red

More information about managing processes under PM2 is available here.

4. Tell PM2 to run on boot

PM2 is able to generate and configure a startup script suitable for the platform it is being run on.

Run these commands and follow the instructions it provides:

pm2 save

pm2 startup

for newer Linux systems that use systemd use

pm2 startup systemd

Temporary Note: There's an open issue on PM2 on GitHub which highlights an issue that has been introduced recently. Linux users need to manually edit the generated `/etc/init.d/pm2-init.sh` file and replace

export PM2_HOME="/root/.pm2"

to point at the correct directory, which would be like:

export PM2_HOME="/home/{youruser}/.pm2"

5. Reboot

Finally, reboot and check everything starts as expected.

 

правильно ли я понимаю, что как минимум надо установить пакет pm2 ?

npm install -g pm2

им запускать node-red:

pm2 start /opt/bin/node-red -- -v

И потом как-то сам pm2 запускать при загрузке ?

Link to comment
Share on other sites

11 час назад, iFinder сказал:

но в конце получил ошибку

(а оно надо?)

sed -i -e '1s,^#!.*sh,#!/opt/bin/sh,' /opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests

 

11 час назад, iFinder сказал:

И, кстати, в Вашем примере остались `/usr`, не заменённые на `/opt`, например:

А readme зачем? Это ж текстовые файлы "для любознательных". Ну, если так надо, то

Скрытый текст

 


~ # 
~ # find /opt/lib/node_modules/node-red/ -type f -a -iname R*.md | xargs grep -E "^#!.*(bash|node|perl|python|ruby|sh)$"
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/usr/bin/env node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/usr/bin/env node
~ # 
~ # find /opt/lib/node_modules/node-red/ -type f -a -iname R*.md | xargs sed -i -e 's,^#!.*node,#!/opt/bin/node,'
~ # 
~ # find /opt/lib/node_modules/node-red/ -type f -a -iname R*.md | xargs grep -E "^#!.*(bash|node|perl|python|ruby|sh)$"
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/commander/Readme.md:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/opt/bin/node
/opt/lib/node_modules/node-red/node_modules/argparse/README.md:#!/opt/bin/node
~ #

 

 

12 часа назад, iFinder сказал:

Ну вот и остался последний этап - Запуск Node-RED при загрузке:

Предлагаете мне пройти весь "квест" за Вас? Ладушки...

~ # 
~ # opkg install procps-ng-pkill
Installing procps-ng-pkill (3.3.15-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/procps-ng-pkill_3.3.15-2_mipsel-3.4.ipk
Installing procps-ng (3.3.15-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/procps-ng_3.3.15-2_mipsel-3.4.ipk
Configuring procps-ng.
Configuring procps-ng-pkill.
~ # 

за основу взят https://gist.github.com/bigmonkeyboy/9962293

Скрытый текст

файл создать со следующим содержимым:


#!/bin/sh

LOG=/opt/var/log/node-red.log

#Load up node red when called
case "$1" in

start)
    if pgrep ^node-red$ > /dev/null
    then
        echo "Node-RED already running."
    else
        echo "Starting Node-Red.."
        touch $LOG
        echo "" >> $LOG
        echo "Node-RED service start: "$(date) >> $LOG
        node-red-pi --max-old-space-size=128 >> $LOG &
        echo "Logging to "$LOG
    fi
;;

stop)
    echo "Stopping Node-Red.."
    pkill -SIGINT ^node-red$
    sleep 2
    echo "" >> $LOG
    echo "Node-RED service stop: "$(date) >> $LOG
;;

restart)
        echo "Restarting Node-Red.."
        $0 stop
        sleep 2
        $0 start
        echo "Restarted."
;;
*)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

и сделать его (файл) исполняемым (для примера, пусть он будет `S99node-red`


chmod +x /opt/etc/init.d/S99node-red

 

тестим

Скрытый текст

 


~ # /opt/etc/init.d/S99node-red start
Starting Node-Red..
Logging to /opt/var/log/node-red.log
~ # 
~ # ps | grep node | grep -v grep
18926 root      125m S    /opt/bin/node --max-old-space-size=128 /opt/lib/node_modules/node-red/bin/../red.js
18943 root     63180 R    {npm} /opt/bin/node /opt/bin/npm -v
~ # 
~ # ps | grep node | grep -v grep
18926 root      140m S    node-red
~ # 
~ # ps | grep node | grep -v grep
18926 root      140m S    node-red
~ # 
~ # /opt/etc/init.d/S99node-red restart
Restarting Node-Red..
Stopping Node-Red..
Starting Node-Red..
Logging to /opt/var/log/node-red.log
Restarted.
~ # 
~ # ps | grep node | grep -v grep
18977 root     83992 R    /opt/bin/node --max-old-space-size=128 /opt/lib/node_modules/node-red/bin/../red.js
~ # 
~ # ps | grep node | grep -v grep
18977 root      124m S    /opt/bin/node --max-old-space-size=128 /opt/lib/node_modules/node-red/bin/../red.js
~ # 
~ # ps | grep node | grep -v grep
18977 root      140m S    node-red
~ # 
~ # /opt/etc/init.d/S99node-red stop
Stopping Node-Red..
~ # 
~ # ps | grep node | grep -v grep
~ # 
~ # 

 

смотрим логи

Скрытый текст

 


~ # 
~ # cat /opt/var/log/node-red.log 

Node-RED service start: Thu Oct 17 09:14:45 MSK 2019
17 Oct 09:14:57 - [info] 

Welcome to Node-RED
===================

17 Oct 09:14:57 - [info] Node-RED version: v1.0.2
17 Oct 09:14:57 - [info] Node.js  version: v8.16.1
17 Oct 09:14:57 - [info] Linux 4.9-ndm-3 mipsel LE
17 Oct 09:15:05 - [info] Loading palette nodes
17 Oct 09:15:14 - [info] Settings file  : /opt/root/.node-red/settings.js
17 Oct 09:15:14 - [info] Context store  : 'default' [module=memory]
17 Oct 09:15:14 - [info] User directory : /opt/root/.node-red
17 Oct 09:15:14 - [warn] Projects disabled : editorTheme.projects.enabled=false
17 Oct 09:15:14 - [info] Flows file     : /opt/root/.node-red/flows_Keenetic_Ultra.json
17 Oct 09:15:14 - [info] Creating new flow file
17 Oct 09:15:15 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

17 Oct 09:15:15 - [info] Starting flows
17 Oct 09:15:15 - [info] Started flows
17 Oct 09:15:15 - [info] Server now running at http://127.0.0.1:1880/
17 Oct 09:16:22 - [info] Stopping flows
17 Oct 09:16:22 - [info] Stopped flows

Node-RED service stop: Thu Oct 17 09:16:24 MSK 2019

Node-RED service start: Thu Oct 17 09:16:26 MSK 2019
17 Oct 09:16:38 - [info] 

Welcome to Node-RED
===================

17 Oct 09:16:38 - [info] Node-RED version: v1.0.2
17 Oct 09:16:38 - [info] Node.js  version: v8.16.1
17 Oct 09:16:38 - [info] Linux 4.9-ndm-3 mipsel LE
17 Oct 09:16:45 - [info] Loading palette nodes
17 Oct 09:16:55 - [info] Settings file  : /opt/root/.node-red/settings.js
17 Oct 09:16:55 - [info] Context store  : 'default' [module=memory]
17 Oct 09:16:55 - [info] User directory : /opt/root/.node-red
17 Oct 09:16:55 - [warn] Projects disabled : editorTheme.projects.enabled=false
17 Oct 09:16:55 - [info] Flows file     : /opt/root/.node-red/flows_Keenetic_Ultra.json
17 Oct 09:16:55 - [info] Creating new flow file
17 Oct 09:16:55 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

17 Oct 09:16:55 - [info] Starting flows
17 Oct 09:16:55 - [info] Started flows
17 Oct 09:16:55 - [info] Server now running at http://127.0.0.1:1880/
17 Oct 09:17:29 - [info] Stopping flows
17 Oct 09:17:29 - [info] Stopped flows

Node-RED service stop: Thu Oct 17 09:17:31 MSK 2019
~ # 

 

 

  • Thanks 1
Link to comment
Share on other sites

Уважаемый TheBB, Ваш вклад в данном случае в поднятии Node-RED на Entware просто неоценим.

Со своей стороны хочу тоже хоть что-то сделать: как только закончатся вопросы выложу итоговую инструкцию.

В 16.10.2019 в 20:28, iFinder сказал:

~ # /opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests:#!/usr/bin/env sh

Указанная выше команда заменила оставшиеся `/usr` на `/opt`

17 часов назад, TheBB сказал:

sed -i -e '1s,^#!.*sh,#!/opt/bin/sh,' /opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests

9. А какую задачу выполняет выше указанная команда (выполнилась без ошибок) ?

Выполнил:

~ # /opt/etc/init.d/S11node-red start
Starting Node-Red..
Logging to /opt/var/log/node-red.log
~ # /opt/bin/node-red-pi: line 43: /usr/bin/env: No such file or directory

и сразу новые вопросы:

10. Почему Вы запускали в файле S11node-red ИМЕННО pi-версию Node-Red ?

node-red-pi --max-old-space-size=128

11. Правильно ли я понимаю, что чтобы избежать ошибки, надо предварительного выполнить (это Вы сами указывали):

sed -i -e 's,/usr/bin/env node,/opt/bin/node,' /opt/lib/node_modules/node-red/bin/node-red-pi

12. Как я понял Entware-пакет procps-ng-pkill Вы установили, чтобы с помощью pkill можно было останавливать работу None-RED.

Почему Вы не стали использовать Node-пакет PM2 (PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.) ?

13. У меня роутер Extra II. О выступает исключительно для создания Wi-Fi-сети и работы Entware, на которой поднят Mosquitto, None-RED и пара моих простеньких скриптов. Будет ли его технических характеристик достаточно, чтобы обеспечить надёжное функционирование приложений на Entware ?

14. Правильно ли я понимаю,что любом режиме роутера (точка доступа и т.д.) приложения на Entware будут работать ?

Link to comment
Share on other sites

9. не разбирал, не знаю, возможно, к внутренней "кухне" node (o ../prepare-tests?)

10.

~ # ls -l /opt/bin/node-red*
lrwxrwxrwx    1 root     root            35 Oct 16 19:07 /opt/bin/node-red -> ../lib/node_modules/node-red/red.js
lrwxrwxrwx    1 root     root            44 Oct 16 19:07 /opt/bin/node-red-pi -> ../lib/node_modules/node-red/bin/node-red-pi
~ # 

т.к. "... за основу взят https://gist.github.com/bigmonkeyboy/9962293..." (см.

В 16.10.2019 в 19:58, TheBB сказал:

9. любым

1+3)

11. да + установить bash (`opkg install bash`)

12. да; если можно упростить - надо упростить, зачем ещё одна сущность, если можно обойтись (см. п. 10)

13. должно; зависит от нагрузки

14. да

  • Upvote 1
Link to comment
Share on other sites

  • 2 weeks later...

Как и обещал ранее выкладываю итоговый:

                        АЛГОРИТМ УСТАНОВКИ:

Особая благодарность уважаемому TheBB 


                I. ПОДГОТОВКА (ОБНОВЛЕНИЕ Entware):

Скрытый текст

1. Подключаюсь с помощью Putty к Entware:
    - 192.168.30.1 порт SSH 222
    - Устанавливаю ангийскую раскладку
    - Ввожу логин root (по-умолчанию)
    - Ввожу пароль keenetic
2. Делаю резервную копию исходной Entware (команда обязательно с точкой в конце !):


~ # tar cvzf /opt/GigaYN-Entware-backup-`date "+%Y-%m-%d_%H-%M"`.tar.gz -C /opt .


3. Забираю созданный файл с \\192.168.30.1\Entware\   GigaYN-Entware-backup-2019-10-16_12-09.tar.gz  (его размер ~20Мб)
4. Обязательно выполняю обновление Entware (были ошибки, поэтому делал несколько раз):


~ # opkg update
~ # opkg upgrade


5. Делаю резервную копию обновлённой Entware (команда обязательно с точкой в конце !):


~ # tar cvzf /opt/GigaYN-Entware-backup-`date "+%Y-%m-%d_%H-%M"`.tar.gz -C /opt .


6. Забираю созданный файл с \\192.168.30.1\Entware\   GigaYN-Entware-backup-2019-10-16_17-26.tar.gz  (его размер ~40Мб)

                II. УСТАНОВКА Node-RED:

Скрытый текст

7. Устанавливаю Entware-пакет node-npm (менеджер пакетов node):


~ # opkg install node-npm


8. Устанавливаю Node-пакет node-red за несколько минут:


~ # npm install -g --unsafe-perm node-red


9. Игнорирую 3 предупреждения, главное из них: "sh: node-pre-gyp: not found"
10. Выполняю правку (найти и исправить пути с `/usr` на `/opt`):


~ # find /opt/lib/node_modules/node-red/ -type f | xargs sed -i -e "1s,^#!.*bash$,#!/opt/bin/bash,;1s,^#!.*node$,#!/opt/bin/node,"
~ # find /opt/lib/node_modules/node-red/ -type f -a -iname R*.md | xargs sed -i -e 's,^#!.*node,#!/opt/bin/node,'

11. Проверяю отсутствие `/usr`:


~ # find /opt/lib/node_modules/node-red/ -type f | xargs grep -E "^#!.*(bash|node|perl|python|ruby|sh)$"


12. Выполняю что-то непонятное:


~ # sed -i -e '1s,^#!.*sh,#!/opt/bin/sh,' /opt/lib/node_modules/node-red/node_modules/ajv/scripts/prepare-tests

 

                III. ДОБАВЛЕНИЕ Node-RED В АВТОЗАГРУЗКУ с помощью Entware-пакета procps-ng-pkill:

Скрытый текст

13. Устанавливаю Entware-пакет procps-ng-pkill:


~ # opkg install procps-ng-pkill
Installing procps-ng-pkill (3.3.15-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/procps-ng-pkill_3.3.15-2_mipsel-3.4.ipk
Installing procps-ng (3.3.15-2) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/procps-ng_3.3.15-2_mipsel-3.4.ipk
Configuring procps-ng.
Configuring procps-ng-pkill.


14. Создаю файл /opt/etc/init.d/S11node-red: (предлагаю только LOG=/opt/var/log/node-red.log заменить на LOG=/opt/root/.node-red/node-red.log - тогда Журнал будет в корневой папке Node-RED)

 

В 17.10.2019 в 09:26, TheBB сказал:

#!/bin/sh LOG=/opt/var/log/node-red.log #Load up node red when called case "$1" in start) if pgrep ^node-red$ > /dev/null then echo "Node-RED already running." else echo "Starting Node-Red.." touch $LOG echo "" >> $LOG echo "Node-RED service start: "$(date) >> $LOG node-red-pi --max-old-space-size=128 >> $LOG & echo "Logging to "$LOG fi ;; stop) echo "Stopping Node-Red.." pkill -SIGINT ^node-red$ sleep 2 echo "" >> $LOG echo "Node-RED service stop: "$(date) >> $LOG ;; restart) echo "Restarting Node-Red.." $0 stop sleep 2 $0 start echo "Restarted." ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac


    - Можно создать в AkelPad и Убрать значки в Entware-редакторе mc
15. Делаю этот файл исполняемым:


~ # chmod +x /opt/etc/init.d/S11node-red
~ # 

 

                IV. ЗАПУСК Node-RED:

Скрытый текст

16. Тестирую работоспособность его справки:


~ # /opt/etc/init.d/S11node-red *


Usage: /opt/etc/init.d/S11node-red {start|stop|restart}
17. Тестирую запуск Node-RED:


~ # /opt/etc/init.d/S11node-red start

Starting Node-Red..
Logging to /opt/root/.node-red/node-red.log


18. Проверяю работоспособность процесса:


~ # ps | grep node | grep -v grep
18926 root      140m S    node-red

Если Node-Red не запущен, то будет так:


~ # ps | grep node | grep -v grep
~ # 

 

 

Link to comment
Share on other sites

Теперь начал писать инструкцию по особенностям работы с Node-Red в Entware.

15. Установил дополнительный узел Node-RED командой:

~ # npm install node-red-contrib-advanced-ping


оказалось, что оно установилось в: /opt/root/node_modules/,

а надо было в: /opt/root/.node-red/node_modules/
и Node-Red его не видит.

Как удалить этот пакет ? В справке npm указано:

~ # npm uninstall -h
npm uninstall [<@scope>/]<pkg>[@<version>]... [--save-prod|--save-dev|--save-optional] [--no-save]

aliases: un, unlink, remove, rm, r

 

Link to comment
Share on other sites

16. Когда устанавливал пакет (см.выше) появилось:

?----------------------------------------------------------------?
   ¦                                                                ¦
   ¦       New minor version of npm available! 6.4.1 > 6.12.0       ¦
   ¦   Changelog: https://github.com/npm/cli/releases/tag/v6.12.0   ¦
   ¦               Run npm install -g npm to update!                ¦
   ¦                                                                ¦
?----------------------------------------------------------------?


Не подумал и выполнил:

~ # npm install -g npm
/opt/bin/npm -> /opt/lib/node_modules/npm/bin/npm-cli.js
/opt/bin/npx -> /opt/lib/node_modules/npm/bin/npx-cli.js
+ npm@6.12.0
added 62 packages from 18 contributors, removed 19 packages and updated 70 packages in 465.64s

Хотел проверить версию и получил, что заслужил:

~ # npm -v
-sh: npm: not found
В 16.10.2019 в 16:52, zyxmon сказал:

Если `opkg update; opkg upgrade` не помогает, поставьте Entware заново.

`opkg update; opkg upgrade` не помогло.

Чтобы не ставить Entware заново, по аналогии с советом:

Проверил отсутствие `/usr`:

~ # find /opt/lib/node_modules/npm/ -type f | xargs grep -E "^#!.*(bash|node|perl|python|ruby|sh)$"


И выполнил правку (найти и исправить пути с `/usr` на `/opt`):

~ # find /opt/lib/node_modules/npm/ -type f | xargs sed -i -e "1s,^#!.*bash$,#!/opt/bin/bash,;1s,^#!.*node$,#!/opt/bin/node,"
~ # find /opt/lib/node_modules/npm/ -type f -a -iname R*.md | xargs sed -i -e 's,^#!.*node,#!/opt/bin/node,'

В итоге получил с фрагментами типа "/usr/bin/":

Скрытый текст

~ # find /opt/lib/node_modules/npm/ -type f | xargs grep -E "^#!.*(bash|node|per
l|python|ruby|sh)$"

/opt/lib/node_modules/npm/configure:#!/opt/bin/bash
/opt/lib/node_modules/npm/node_modules/opener/bin/opener-bin.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/uuid/bin/uuid:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/JSONStream/bin.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/errno/cli.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/errno/build.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/qrcode-terminal/bin/qrcode-terminal.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/is-ci/bin.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/node-gyp/test/docker.sh:#!/opt/bin/bash
/opt/lib/node_modules/npm/node_modules/node-gyp/node_modules/semver/bin/semver:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/node-gyp/node_modules/nopt/examples/my-program.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/node-gyp/node_modules/nopt/bin/nopt.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/setup.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/common_test.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input_test.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/__init__.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/samples/samples:#!/usr/bin/python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp:#!/bin/sh
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/pretty_sln.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/pretty_gyp.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/graphviz.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/emacs/run-unit-tests.sh:#!/bin/sh
/opt/lib/node_modules/npm/node_modules/node-gyp/gyp/tools/pretty_vcproj.py:#!/usr/bin/env python
/opt/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/which/bin/which:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/rimraf/bin.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/semver/bin/semver:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/sshpk/bin/sshpk-verify:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/sshpk/bin/sshpk-conv:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/sshpk/bin/sshpk-sign:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/lockfile/gen-changelog.sh:#!/opt/bin/bash
/opt/lib/node_modules/npm/node_modules/ajv/scripts/prepare-tests:#!/bin/sh
/opt/lib/node_modules/npm/node_modules/ajv/scripts/info:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/ajv/scripts/travis-gh-pages:#!/opt/bin/bash
/opt/lib/node_modules/npm/node_modules/mkdirp/bin/cmd.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/rc/cli.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/nopt/examples/my-program.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/nopt/bin/nopt.js:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp:#!/usr/bin/env sh
/opt/lib/node_modules/npm/node_modules/dashdash/etc/dashdash.bash_completion.in:#!/opt/bin/bash
/opt/lib/node_modules/npm/node_modules/yargs/README.md:#!/opt/bin/node
/opt/lib/node_modules/npm/node_modules/yargs/README.md:#!/opt/bin/node
/opt/lib/node_modules/npm/scripts/clean-old.sh:#!/opt/bin/bash
/opt/lib/node_modules/npm/scripts/pr:#!/opt/bin/bash
/opt/lib/node_modules/npm/scripts/dev-dep-update:#!/opt/bin/bash
/opt/lib/node_modules/npm/scripts/update-authors.sh:#!/bin/sh
/opt/lib/node_modules/npm/scripts/release.sh:#!/opt/bin/bash
/opt/lib/node_modules/npm/scripts/install.sh:#!/bin/sh
/opt/lib/node_modules/npm/scripts/doc-build.sh:#!/opt/bin/bash
/opt/lib/node_modules/npm/scripts/maketest:#!/opt/bin/node
/opt/lib/node_modules/npm/scripts/dep-update:#!/opt/bin/bash
/opt/lib/node_modules/npm/scripts/relocate.sh:#!/opt/bin/bash
/opt/lib/node_modules/npm/scripts/gen-changelog:#!/bin/sh
/opt/lib/node_modules/npm/scripts/index-build.js:#!/opt/bin/node
/opt/lib/node_modules/npm/lib/utils/completion.sh:#!/opt/bin/bash
/opt/lib/node_modules/npm/CHANGELOG.md:#!/usr/bin/env node
/opt/lib/node_modules/npm/bin/npx-cli.js:#!/opt/bin/node
/opt/lib/node_modules/npm/bin/npm-cli.js:#!/opt/bin/node
/opt/lib/node_modules/npm/bin/npx:#!/bin/sh
/opt/lib/node_modules/npm/bin/npm:#!/bin/sh
/opt/lib/node_modules/npm/bin/node-gyp-bin/node-gyp:#!/usr/bin/env sh
~ #

 


 

Есть фрагменты типа "/usr/bin/". но самое главное:

~ # npm -v
6.12.0

Вопросы: Что ещё надо сделать, чтобы можно было осваивать Node-Red и не переживать что криво установил ?

Или лучше вообще переустановить Entware, Node и Node-Red?

Link to comment
Share on other sites

19. Как можно посмотреть, сколько ресурсов (память, процессор) занимает Node-Red, чтобы понять насколько Роутер подходит для его использования ?

20. На каждом этапе я делал резервные копии.

~ # tar cvzf /opt/Entware-backup-`date "+%Y-%m-%d_%H-%M"`.tar.gz -C /opt .

Но как теперь из них восстановить Entware ?

21. Как перенести/скопировать текущую Entware на другую флэшку ?

Link to comment
Share on other sites

15. ключ `-g` (global) должен помочь:

npm i node-red-contrib-advanced-ping -g

Удалять, согласно справке:

npm uninstall node-red-contrib-advanced-ping
# или с aliases: un, unlink, remove, rm, r
npm un node-red-contrib-advanced-ping

16. Можно и переустановить, если надоело играться и рука уже набита, а пока:

find /opt/lib/node_modules -type f | xargs sed -i -e '1s,^#!.*bash,#!/opt/bin/bash,;1s,^#!.*node,#!/opt/bin/node,;1s,^#!.*python,#!/opt/bin/python,'

после проверки

find /opt/lib/node_modules/ -type f | xargs grep -E "^#!.*(bash|node|perl|python|sh)$" | grep usr

оставшиеся править "точечно", напр.,

sed -i -e '1s,^#!.*sh,#!/opt/bin/sh,' /opt/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp /opt/lib/node_modules/npm/bin/node-gyp-bin/node-gyp

17. `opkg update && opkg upgrade` )))

18. `npm up node-red` (опционально, с ключем `-g`)

19. `opkg install htop`, запустить `htop`, нажать "F4", набрать "node" (опционально, клацнуть "Enter"), наблюдать...

20. смотря, что нужно восстановить, потому, переходим к "21"

21. создать каталог "install" и в него скопировать архив с резервной копией. В web устройства выбрать нужный накопитель, заполнить строку инициализации `/opt/etc/init.d/rc.unslung`, нажать "Сохранить" и ждать окончание процесса распаковки.

  • Thanks 1
Link to comment
Share on other sites

Как, всегда в Ваших ответах есть во что вникнуть. Но у меня тут беда случилась:

Тестировал перебор JSON-данных в цикле. Среда Node-Red зависла. Да так, что не смог подключиться к Entware через Putty. Передёргивание флэшки, перезагрузка Роутера не дали результатов. Потом обнаружил, что на Роутере полностью слетела строка инициализации `/opt/etc/init.d/rc.unslung`. Обрадовался, указал строку инициализации, перезагрузился, но Node-Red осталась недоступной. Зато смог войти к Entware через Putty. В журнале только несколько (осталось от прошлых перезагрузок) одиночных первых строк запуска и больше ничего. Тогда запустил напрямую:

~ # node-red
Bus error
~ #
~ # npm -v
Bus error
~ #

и получил совсем непонятное. Так что даже отработать Ваш ответ не на чем...

И снова Что делать ?

Link to comment
Share on other sites

Начать надо, наверно, с проверки диска на ошибки. Если результата не даст, или новая установка, или восстановление из резервной копии.

Link to comment
Share on other sites

1 минуту назад, TheBB сказал:

Начать надо, наверно, с проверки диска на ошибки. Если результата не даст, или новая установка, или восстановление из резервной копии.

Проверять на Windows (я с ней уже более 30 лет) или, учитывая специфику, в самой Entware ?

Если на Entware, тогда как ?

Link to comment
Share on other sites

3 часа назад, TheBB сказал:

16. Можно и переустановить, если надоело играться и рука уже набита, а пока:

17 часов назад, iFinder сказал:

И выполнил правку (найти и исправить пути с `/usr` на `/opt`):

16. То, что Вы прописали это вместо или в дополнение к сделанному мною ранее ?

17 часов назад, iFinder сказал:

17. Как в Entware нужно правильно обновлять Node ?

17. Правильно ли я понимаю, что и сама Entware и её пакеты (в т.ч. Node) обновляются командами `opkg update && opkg upgrade` ?

3 часа назад, TheBB сказал:

20. смотря, что нужно восстановить, потому, переходим к "21"

20. Судя по ответу можно какие-то части. А как можно частично восстановить ?

3 часа назад, TheBB сказал:

21. создать каталог "install" и в него скопировать архив с резервной копией. В web устройства выбрать нужный накопитель, заполнить строку инициализации `/opt/etc/init.d/rc.unslung`, нажать "Сохранить" и ждать окончание процесса распаковки.

21. По-моему на форуме писалось, что USB-флэшка должна быть в FAT32. Можно ли её отформатировать средствами Keenetic/Entware ?

Если да, то как ?

Link to comment
Share on other sites

3 часа назад, iFinder сказал:

Проверять на Windows (я с ней уже более 30 лет) или, учитывая специфику, в самой Entware ?

Если на Entware, тогда как ?

Желательно, на ПК, в родной для ФС ОС (NTFS => Windows; ext* => GNU/Linux).

2 часа назад, iFinder сказал:

16. То, что Вы прописали это вместо или в дополнение к сделанному мною ранее ?

Без разницы

2 часа назад, iFinder сказал:

17. Правильно ли я понимаю, что и сама Entware и её пакеты (в т.ч. Node) обновляются командами `opkg update && opkg upgrade` ?

В Entware два пакета Node.js - node & node-npm (теоретически, можно собрать и нек-рые др.). Указанными командами обновляются все установленные пакеты, кроме внешних, напр., те же "node-red", "node-red-contrib-advanced-ping" или пакеты, установленные с помощью "pip install ${package_name}", собранные perl или ruby...

2 часа назад, iFinder сказал:

20. Судя по ответу можно какие-то части. А как можно частично восстановить ?

Универсального варианта нет, всё индивидуально. Можно распаковать во временную директорию и из неё вытягивать нужное.

2 часа назад, iFinder сказал:

21. По-моему на форуме писалось, что USB-флэшка должна быть в FAT32. Можно ли её отформатировать средствами Keenetic/Entware ?

Если да, то как ?

Нет, только ntfs, hfs, ext2/ext3/ext4. Средствами прошивки - нет. В Entware - возможно, но требуется вторая рабочая система.

Link to comment
Share on other sites

59 минут назад, TheBB сказал:

Желательно, на ПК, в родной для ФС ОС (NTFS => Windows; ext* => GNU/Linux).

Тогда однозначно NTFS. Подключил флэшку с рабочей Entware (но не рабочей Nede-RED). Windows XP считает, что флэшка не отформатирована и предлагает сделать это. Это нормально или это признак, что флэшка имеет серьёзные проблемы ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...