snapcraft nodejs 插件在为不同操作系统创建应用快照时如何处理 Node.js 环境?



我试图了解我用来创建快照节点.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

现在我可以在我的机器(amd64 Ubuntu 16.04 LTS(上运行命令/服务,安装了 Node.js v12.2.0,但我找不到节点.js env 不在多通道实例中,不在另一台安装了 Ubuntu Core 18 的机器中,我的意思是我不能以节点 - version 等方式运行命令,甚至 snap 应用程序也不起作用,命令和服务。

我在RaspBerry Pi3上安装的Ubuntu Core 18 env中发现的另一个问题是: 当我在文件夹/snap//bin 中使用 nodejs 应用程序安装我的快照时,我无法运行 ./node exec ! 我收到错误:

./node: 1: ./node: Syntax error: "(" unexpected

我的问题是:

  • 为什么我收到 ./node 错误?
  • my-snap-file.snap 将 Node.js v12.3.1 捆绑在 mysnap 中 ?
  • 我如何测试节点.js是在多通道和其他我只安装了快照捆绑节点的机器中使用正确的版本.js ?

谢谢

多亏了 forum.snapcraft.io 我已经解决了这个问题......我在这里发帖也是为了帮助人们解决这类问题。此错误是由于快照不是基于要在其上运行它的实际目标体系结构构建的。确保你构建例如。armhf(Raspberry PI3(实际上在armhf架构设备上。

architectures: 
- build-on: amd64 
run-on: [amd64, armhf]

在这里,您告诉 SnapCraft,在 AMD64 上构建会产生可以在 AMD64 和 ARMPH 上运行的二进制快照......这确实不是真的(因为在 amd64 上构建只会引入 amd64 二进制文件(。我会完全放弃该声明,并确保在 armhf 设备(或 build.snapcraft.io(上构建 armhf 版本。(学分奥格拉(

阅读有关 snapcraft.yaml 中架构的链接

https://forum.snapcraft.io/t/architectures/4972

最新更新