plugins - 当您为不同的操作系统创建应用程序快照时,snapcraft nodejs 插件如何处理 Node.js 环境?
问题描述
我试图了解我用来创建 snap node.js 应用程序的 nodejs 插件如何处理 Node.js 环境?此应用程序中的示例:
parts:
webserver:
source: .
plugin: nodejs
nodejs-version: "12.13.1"
nodejs-package-manager: "yarn"
nodejs-yarn-version: "v1.21.1"
我定义使用 Node.js v12.13.1 和 Yarn v1.21.1 午餐 snapcraft 命令:
snapcraft clean
snapcraft --debug
snap install my-snap-file.snap --dangerous
现在我可以在安装了 Node.js v12.2.0 的机器(amd64 Ubuntu 16.04 LTS)上运行命令/服务,但我找不到 node.js env 不在多通道实例中,不在另一台安装了 Ubuntu Core 18 的机器上,我的意思是我不能以 node --version 等方式运行命令,甚至 snap 应用程序也不能运行,既不能命令也不能服务。
我发现在 RaspBerry Pi3 上安装的 Ubuntu Core 18 环境中挖掘的其他问题是:当我在文件夹 /snap//bin 中安装我的带有 nodejs 应用程序的 snap 时,我无法运行 ./node exec!我得到错误:
./node: 1: ./node: Syntax error: "(" unexpected
我的问题是:
- 为什么我得到 ./node 错误?
- my-snap-file.snap 将 Node.js v12.3.1 捆绑在 mysnap 中?
- 我如何测试 node.js 在 multipass 和其他我只安装了 snap 捆绑 node.js 的机器上使用正确的版本?
总价
解决方案
感谢 forum.snapcraft.io 我已经解决了这个问题......我在这里发帖也是为了帮助人们解决这些问题。此错误是由于快照未构建在您要运行它的实际目标架构上。确保您构建例如。armhf (raspberry pi3) 实际上在 armhf 架构设备上。
architectures:
- build-on: amd64
run-on: [amd64, armhf]
在这里,您告诉 snapcraft,在 amd64 上构建会生成可以在 amd64 和 armhf 上运行的二进制快照……这确实不是真的(因为在 amd64 上构建只会引入 amd64 二进制文件)。我会完全放弃该声明,并确保在 armhf 设备(或 build.snapcraft.io)上构建 armhf 版本。(学分奥格拉)
阅读 snapcraft.yaml 中关于架构的链接
推荐阅读
- css - Grid Container 不会占用完整的 vh
- javascript - 输入值已设置且可见,但在另一个脚本中无法访问
- powershell - 将管道参数绑定到函数参数时出现空错误
- scala - Scala 函数式编程和可变性
- visual-studio-code - vsCode 设置和切换编程语言
- python-3.x - tensorflow show ImportError: DLL load failed: %1 is not an valid Win32 application
- mysql - 另一个无法在 gcloud 中远程 mysql
- c# - Bot Framework 在对话之外读取 UserState 数据或恢复对话对话
- r - 如何通过 R 中的 For 循环创建许多线性回归模型?
- google-sheets - 如何从 X 单元格中获取最后 2 个数字并将它们添加到 Y 单元格中的 @ 之前?