Настроить
У меня есть PI3 с Джесси. Согласно Википедии он использует ARM Cortex-A53 , который ARMv8-A
.
При установке node.js с помощью этого учебника по adafruit я получаю узел, v0.12
который все еще находится на стадии бета-тестирования.
Вопрос:
Я хотел бы использовать по крайней мере v4
из node.js
. Как мне установить это и запустить?
Неудачные подходы
Первый
Этот урок описывает, как это сделать.
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
Начиная с версии 4.0.0 наш набор тестов должен постоянно проходить на ARMv6, ARMv7 и новых 64-битных процессорах ARMv8.
V.5.0.0: ARMv8, 64-разрядный двоичный файл :
=> Невозможно выполнить двоичный файл.
-bash: /usr/local/bin/node: cannot execute binary file: Exec format error
второй
https://github.com/nodesource/distributions#installation-instructions
Останавливается во время sudo apt-get install -y nodejs
Но я думаю, что они еще не поддерживают arm64
проблему 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)
Stretch
) до сих пор не поставляется с нативной поддержкойarmv8
.Ответы:
Я установил node.js сегодня, используя второй метод из этого вопроса, работал просто отлично. У меня есть Raspbian Джесси на малине 3.
Я не знаю, почему этот метод не работает для вас. Возможно, он был обновлен и теперь работает лучше?
источник
v6.x
Как установить
Почему ArmV7:
На моем пи & пакете написано
Raspberry Pi 3 Model B
и согласно википедии :The ARM Cortex-A53 is a microarchitecture implementing the ARMv8-A 64-bit
что привело меня к загрузкеARMv8 64-bit Binary
.Но пи показывает с
uname -a
Linux raspberrypi 4.1.14-v7+ #4 SMP PREEMPT Wed Mar 23 15:30:13 UTC 2016 armv7l GNU/Linux
. Так что, видимо, естьarmv7
в пи.РЕДАКТИРОВАТЬ: Кажется, это правильно https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=140572
32-битный режим используется из-за отсутствия поддержки операционной системы, насколько я понимаю. Если кто-то может объяснить это более точно, пожалуйста, оставьте комментарий.
источник
arm64
версия здесь ( debian.org/CD/netinst ), но я пока не смог ее загрузить.Используя nvm
Альтернативное решение - использовать nvm в качестве установщика для Node.
nvm
расшифровывается как Node Version Manager и имеет много преимуществ, таких как:node
устанавливаются разные версии (например, для проверки вашей программы с разными версиями узла, чтобы проверить развертывание в разных установках)В то время как я был настроен скептически в начале (хотя я использую
nvm
успешно на других системах), после того, как ищем лучшее решение , чтобыnode
иnpm
установлен и доступны для всех пользователей (включая корень , который необходим для аппаратного обеспечения доступа на RasPi) и ныряние во весь узел дистрибутивы, пакеты и источники, я решил попробовать этот метод. И это сработало!Вот мои шаги:
Прежде всего, вам необходимо установить nvm . Вы можете запустить этот скрипт из вашей домашней папки или из любого другого места, но он будет установлен
nvm
для текущего пользователя ( в моем случае pi, хотя для этого был создан другой, который теперь не нужен). Вы можете заменить версию (v0.32.0) на последнюю.curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | удар
Вам нужно заново открыть терминал, чтобы получить доступ к nvm
Затем вы устанавливаете Node с помощью этой простой команды:
NVM установить v6.6.0
Вы можете проверить доступные версии, выпуская
nvm ls-remote
и выбрать ту, которая подходит вамВы устанавливаете эту версию по умолчанию
node
для вашей системы:nvm псевдоним по умолчанию v6.6.0
и проверьте установленную версию с помощью
node -v
иnpm -v
Теперь у вас установлен Node v6.6.0 для текущего пользователя. Он еще не доступен для root или других пользователей в вашей системе, но вы можете захотеть это, так что вы можете:
создать символические ссылки (псевдонимы), чтобы сделать его доступным для всей системы:
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
Или , если в вашей системе уже установлен узел по умолчанию, и вы получаете сообщение об ошибке вышеописанным методом (как в моем случае), запустите эту неуклюжую строку:
n = $ (какой узел); n = $ {n% / bin / node}; chmod -R 755 $ n / bin / *; sudo cp -r $ n / {bin, lib, share} / usr / local
и ваша недавно установленная версия
node
теперь доступна всем, что позволяет вам устанавливать пакеты npm по всему миру и т. д.Обратите внимание, что всякий раз, когда вы хотите переключить версию узла, вам нужно будет выполнить указанную выше команду (которая может показаться пугающей, но все, что она делает, - это копирует
node
файлы/usr/local
, они записаны в сжатой форме).Надеюсь, это кому-то поможет и сэкономит время!
Ссылки:
КАК УСТАНОВИТЬ NODE.JS НА РАСПЕРРИ ПИ от Брэндона Каннадея,
1-й комментарий из вышеприведенного поста (RYAN PARSLEY),
этот ответ StackOverflow ,
руководство DigitalOcean, которое пришло с
/usr/local
идеей копирования,и Интернет и Google, которые позволили мне часами пытаться выбрать лучшее решение из океана идей :)
источник
Согласно этому посту, а также по моему опыту, все предустановленные Raspbian версии node.js устарели. Поэтому лучше всего сначала удалить все предыдущие установки узлов и переустановить их. Это также отлично сработало для Raspbian Stretch .
Сделай это:
источник