如何在 snapcraft 中正确安装 nodejs?
How to install properly nodejs in snapcraft?
https://ubuntu.com/tutorials/electron-kiosk#4-converting-the-electron-snap-into-a-kiosk-snap
您好!
我已经按照本教程进行操作,但我无法让它正常工作,我的问题是当我至少需要 10.12 时安装了 nodejs 8.10.0。
我尝试添加节点版本或节点引擎或其他参数,但它在安装 8.10.0 后下载了我想要的版本。
如果有人能帮助我!!
[编辑]
当我 运行 在 plugin: nodejs
之后添加 nodejs-version: "12.18.3"
的 snapcraft 时的一些日志
Launching a VM.
snap "snapd" has no updates available
Running with 'sudo' may cause permission errors and is discouraged. Use 'sudo' when cleaning.
Skipping pull desktop-gtk3 (already ran)
Skipping pull xwayland-kiosk-helper (already ran)
Hit http://archive.ubuntu.com/ubuntu bionic InRelease
Hit http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit http://security.ubuntu.com/ubuntu bionic-security InRelease
Fetched 0 B in 0s (0 B/s)
Get:1 libxdmcp6_1.1.2-3_amd64.deb [10.7 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 gconf2-common_3.2.6-4ubuntu1_all.deb [700 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libdbus-1-3_1.12.2-1ubuntu1.2_amd64.deb [175 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libasound2-data_1.1.3-5ubuntu0.5_all.deb [38.7 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libsqlite3-0_3.22.0-1ubuntu0.4_amd64.deb [499 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libbsd0_0.8.7-1ubuntu0.1_amd64.deb [41.6 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libx11-6_1.6.4-3ubuntu0.3_amd64.deb [571 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libxau6_1.0.8-1ubuntu1_amd64.deb [7556 B]
Fetched 0 B in 0s (0 B/s)
Get:1 libxcb1_1.13-2~ubuntu18.04_amd64.deb [45.5 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libxtst6_1.2.3-1_amd64.deb [12.8 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 ucf_3.0038_all.deb [50.5 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libdbus-glib-1-2_0.110-2_amd64.deb [58.3 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libx11-data_1.6.4-3ubuntu0.3_all.deb [114 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libasound2_1.1.3-5ubuntu0.5_amd64.deb [360 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libnss3_3.35-2ubuntu2.12_amd64.deb [1220 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libffi6_3.2.1-8_amd64.deb [17.9 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 x11-common_7.7+19ubuntu7.1_all.deb [22.5 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libgconf-2-4_3.2.6-4ubuntu1_amd64.deb [84.8 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libxss1_1.2.2-1_amd64.deb [8582 B]
Fetched 0 B in 0s (0 B/s)
Get:1 libglib2.0-0_2.56.4-0ubuntu0.18.04.6_amd64.deb [1171 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libnspr4_4.18-1ubuntu1_amd64.deb [112 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libx11-xcb1_1.6.4-3ubuntu0.3_amd64.deb [9628 B]
Fetched 0 B in 0s (0 B/s)
Get:1 libxext6_1.3.3-1_amd64.deb [29.4 kB]
Fetched 0 B in 0s (0 B/s)
Cleaning later steps and re-pulling electron-helloworld ('nodejs-version' property changed)
Cloning into '/root/parts/electron-helloworld/src'...
remote: Enumerating objects: 688, done.
remote: Total 688 (delta 0), reused 0 (delta 0), pack-reused 688
Receiving objects: 100% (688/688), 445.19 KiB | 1.31 MiB/s, done.
Resolving deltas: 100% (365/365), done.
Downloading 'node-v12.18.3-linux-x64.tar.gz'[================================================================================================================================================================] 100%
Downloading 'latest.tar.gz'[=================================================================================================================================================================================] 100%
Skipping build desktop-gtk3 (already ran)
Skipping build xwayland-kiosk-helper (already ran)
Building electron-helloworld
▐ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine electron-packager@15.1.0: wanted: {"node":">= 10.12.0"} (current: {"node":"8.10.0","npm":"3.5.2"})
loadDep:global-tunnel-ng ▀ ╢█████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
loadDep:serialize-error → ▀ ╢███████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine semver@7.3.2: wanted: {"node":">=10"} (current: {"node":"8.10.0","npm":"3.5.2"})
WARN engine serialize-error@7.0.1: wanted: {"node":">=10"} (current: {"node":"8.10.0","npm":"3.5.2"})
loadDep:serialize-error → ▐ ╢███████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
loadDep:type-fest → reque ▀ ╢███████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
loadDep:pend → resolveWit ▀ ╢███████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine extract-zip@2.0.1: wanted: {"node":">= 10.17.0"} (current: {"node":"8.10.0","npm":"3.5.2"})
loadDep:yargs-parser → ge ▄ ╢█████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine electron-notarize@1.0.0: wanted: {"node":">= 10.0.0"} (current: {"node":"8.10.0","npm":"3.5.2"})
npm ERR! Linux 4.15.0-1072-kvm
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "electron" "electron-packager"
npm ERR! node v8.10.0
npm ERR! npm v3.5.2
npm ERR! code EMISSINGARG
npm ERR! typeerror Error: Missing required argument #1
npm ERR! typeerror at andLogAndFinish (/usr/share/npm/lib/fetch-package-metadata.js:31:3)
npm ERR! typeerror at fetchPackageMetadata (/usr/share/npm/lib/fetch-package-metadata.js:51:22)
npm ERR! typeerror at resolveWithNewModule (/usr/share/npm/lib/install/deps.js:456:12)
npm ERR! typeerror at /usr/share/npm/lib/install/deps.js:457:7
npm ERR! typeerror at /usr/share/npm/node_modules/iferr/index.js:13:50
npm ERR! typeerror at /usr/share/npm/lib/fetch-package-metadata.js:37:12
npm ERR! typeerror at addRequestedAndFinish (/usr/share/npm/lib/fetch-package-metadata.js:82:5)
npm ERR! typeerror at returnAndAddMetadata (/usr/share/npm/lib/fetch-package-metadata.js:117:7)
npm ERR! typeerror at pickVersionFromRegistryDocument (/usr/share/npm/lib/fetch-package-metadata.js:134:20)
npm ERR! typeerror at /usr/share/npm/node_modules/iferr/index.js:13:50
npm ERR! typeerror This is an error with npm itself. Please report this error at:
npm ERR! typeerror <http://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /root/parts/electron-helloworld/build/npm-debug.log
cp: cannot stat './electron-quick-start-linux-x64': No such file or directory
Failed to run 'override-build': Exit code was 1.
Run the same command again with --debug to shell into the environment if you wish to introspect this failure.
(抱歉可能英语不好)
首先从您的计算机中删除 nodejs:
sudo apt remove nodejs
然后,运行下面的命令一个接一个:
cd ~
curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh
sudo apt install nodejs
你是对的,即使在 snapcraft.yaml
中通过 base: core18
使用 core18
作为基础,snap 包中的 nodejs 运行时也已经过时了。
解决方案不是使用 snapcraft nodejs 插件,而是直接从 nodejs 发行版存档下载提供的二进制文件:https://nodejs.org/dist/.
这可以通过 snapcrafts dump
插件非常方便地完成,该插件支持下载和提取存档(甚至是高效的 xy
压缩),只需一行代码:获取最新的 nodejs 版本12.18.x
对于 64 位 (AMD) linux 这个 parts
定义让它进入快照:
parts:
node:
plugin: dump
source: https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz
Nodejs 将在快照 bin
目录中可用。启动 javascript 应用程序的命令可能如下所示:
command: bin/node $SNAP/app/index.js
好的,我终于找到了怎么做
我只需要添加
build-snaps:
- node/12/stable
在electron-helloworld部分
(请注意,在那之后我还有其他问题,但这是另一个主题)
https://ubuntu.com/tutorials/electron-kiosk#4-converting-the-electron-snap-into-a-kiosk-snap
您好!
我已经按照本教程进行操作,但我无法让它正常工作,我的问题是当我至少需要 10.12 时安装了 nodejs 8.10.0。 我尝试添加节点版本或节点引擎或其他参数,但它在安装 8.10.0 后下载了我想要的版本。
如果有人能帮助我!!
[编辑]
当我 运行 在 plugin: nodejs
nodejs-version: "12.18.3"
的 snapcraft 时的一些日志
Launching a VM.
snap "snapd" has no updates available
Running with 'sudo' may cause permission errors and is discouraged. Use 'sudo' when cleaning.
Skipping pull desktop-gtk3 (already ran)
Skipping pull xwayland-kiosk-helper (already ran)
Hit http://archive.ubuntu.com/ubuntu bionic InRelease
Hit http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit http://security.ubuntu.com/ubuntu bionic-security InRelease
Fetched 0 B in 0s (0 B/s)
Get:1 libxdmcp6_1.1.2-3_amd64.deb [10.7 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 gconf2-common_3.2.6-4ubuntu1_all.deb [700 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libdbus-1-3_1.12.2-1ubuntu1.2_amd64.deb [175 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libasound2-data_1.1.3-5ubuntu0.5_all.deb [38.7 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libsqlite3-0_3.22.0-1ubuntu0.4_amd64.deb [499 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libbsd0_0.8.7-1ubuntu0.1_amd64.deb [41.6 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libx11-6_1.6.4-3ubuntu0.3_amd64.deb [571 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libxau6_1.0.8-1ubuntu1_amd64.deb [7556 B]
Fetched 0 B in 0s (0 B/s)
Get:1 libxcb1_1.13-2~ubuntu18.04_amd64.deb [45.5 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libxtst6_1.2.3-1_amd64.deb [12.8 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 ucf_3.0038_all.deb [50.5 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libdbus-glib-1-2_0.110-2_amd64.deb [58.3 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libx11-data_1.6.4-3ubuntu0.3_all.deb [114 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libasound2_1.1.3-5ubuntu0.5_amd64.deb [360 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libnss3_3.35-2ubuntu2.12_amd64.deb [1220 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libffi6_3.2.1-8_amd64.deb [17.9 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 x11-common_7.7+19ubuntu7.1_all.deb [22.5 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libgconf-2-4_3.2.6-4ubuntu1_amd64.deb [84.8 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libxss1_1.2.2-1_amd64.deb [8582 B]
Fetched 0 B in 0s (0 B/s)
Get:1 libglib2.0-0_2.56.4-0ubuntu0.18.04.6_amd64.deb [1171 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libnspr4_4.18-1ubuntu1_amd64.deb [112 kB]
Fetched 0 B in 0s (0 B/s)
Get:1 libx11-xcb1_1.6.4-3ubuntu0.3_amd64.deb [9628 B]
Fetched 0 B in 0s (0 B/s)
Get:1 libxext6_1.3.3-1_amd64.deb [29.4 kB]
Fetched 0 B in 0s (0 B/s)
Cleaning later steps and re-pulling electron-helloworld ('nodejs-version' property changed)
Cloning into '/root/parts/electron-helloworld/src'...
remote: Enumerating objects: 688, done.
remote: Total 688 (delta 0), reused 0 (delta 0), pack-reused 688
Receiving objects: 100% (688/688), 445.19 KiB | 1.31 MiB/s, done.
Resolving deltas: 100% (365/365), done.
Downloading 'node-v12.18.3-linux-x64.tar.gz'[================================================================================================================================================================] 100%
Downloading 'latest.tar.gz'[=================================================================================================================================================================================] 100%
Skipping build desktop-gtk3 (already ran)
Skipping build xwayland-kiosk-helper (already ran)
Building electron-helloworld
▐ ╢░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine electron-packager@15.1.0: wanted: {"node":">= 10.12.0"} (current: {"node":"8.10.0","npm":"3.5.2"})
loadDep:global-tunnel-ng ▀ ╢█████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
loadDep:serialize-error → ▀ ╢███████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine semver@7.3.2: wanted: {"node":">=10"} (current: {"node":"8.10.0","npm":"3.5.2"})
WARN engine serialize-error@7.0.1: wanted: {"node":">=10"} (current: {"node":"8.10.0","npm":"3.5.2"})
loadDep:serialize-error → ▐ ╢███████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
loadDep:type-fest → reque ▀ ╢███████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
loadDep:pend → resolveWit ▀ ╢███████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine extract-zip@2.0.1: wanted: {"node":">= 10.17.0"} (current: {"node":"8.10.0","npm":"3.5.2"})
loadDep:yargs-parser → ge ▄ ╢█████████████████████████████████████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░╟
WARN engine electron-notarize@1.0.0: wanted: {"node":">= 10.0.0"} (current: {"node":"8.10.0","npm":"3.5.2"})
npm ERR! Linux 4.15.0-1072-kvm
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "electron" "electron-packager"
npm ERR! node v8.10.0
npm ERR! npm v3.5.2
npm ERR! code EMISSINGARG
npm ERR! typeerror Error: Missing required argument #1
npm ERR! typeerror at andLogAndFinish (/usr/share/npm/lib/fetch-package-metadata.js:31:3)
npm ERR! typeerror at fetchPackageMetadata (/usr/share/npm/lib/fetch-package-metadata.js:51:22)
npm ERR! typeerror at resolveWithNewModule (/usr/share/npm/lib/install/deps.js:456:12)
npm ERR! typeerror at /usr/share/npm/lib/install/deps.js:457:7
npm ERR! typeerror at /usr/share/npm/node_modules/iferr/index.js:13:50
npm ERR! typeerror at /usr/share/npm/lib/fetch-package-metadata.js:37:12
npm ERR! typeerror at addRequestedAndFinish (/usr/share/npm/lib/fetch-package-metadata.js:82:5)
npm ERR! typeerror at returnAndAddMetadata (/usr/share/npm/lib/fetch-package-metadata.js:117:7)
npm ERR! typeerror at pickVersionFromRegistryDocument (/usr/share/npm/lib/fetch-package-metadata.js:134:20)
npm ERR! typeerror at /usr/share/npm/node_modules/iferr/index.js:13:50
npm ERR! typeerror This is an error with npm itself. Please report this error at:
npm ERR! typeerror <http://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /root/parts/electron-helloworld/build/npm-debug.log
cp: cannot stat './electron-quick-start-linux-x64': No such file or directory
Failed to run 'override-build': Exit code was 1.
Run the same command again with --debug to shell into the environment if you wish to introspect this failure.
(抱歉可能英语不好)
首先从您的计算机中删除 nodejs:
sudo apt remove nodejs
然后,运行下面的命令一个接一个:
cd ~
curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh
sudo apt install nodejs
你是对的,即使在 snapcraft.yaml
中通过 base: core18
使用 core18
作为基础,snap 包中的 nodejs 运行时也已经过时了。
解决方案不是使用 snapcraft nodejs 插件,而是直接从 nodejs 发行版存档下载提供的二进制文件:https://nodejs.org/dist/.
这可以通过 snapcrafts dump
插件非常方便地完成,该插件支持下载和提取存档(甚至是高效的 xy
压缩),只需一行代码:获取最新的 nodejs 版本12.18.x
对于 64 位 (AMD) linux 这个 parts
定义让它进入快照:
parts:
node:
plugin: dump
source: https://nodejs.org/dist/v12.18.4/node-v12.18.4-linux-x64.tar.xz
Nodejs 将在快照 bin
目录中可用。启动 javascript 应用程序的命令可能如下所示:
command: bin/node $SNAP/app/index.js
好的,我终于找到了怎么做
我只需要添加
build-snaps:
- node/12/stable
在electron-helloworld部分
(请注意,在那之后我还有其他问题,但这是另一个主题)