我正在尝试打包我的第一个 snap,最终目标是在 Ubuntu Core 20 上部署一个应用程序。我是 snapcraft 和 multipass 的新手,所以我正在遵循“创建你的第一个 Snap“Ubuntu 网站上的教程。
我正在运行 Ubuntu Server 20.04 LTS 的 Raspberry Pi 4 上进行构建。打包 snap 包后,我希望能够将其复制到另一个运行 Ubuntu Core 20 的 Raspberry Pi 4 上。
我已仔细遵循说明..安装了 snapcraft,初始化了一个新的 snap,并使用教程中的示例内容编辑了 snapcraft.yaml 文件:
name: hello
base: "core18"
version: '2.10'
summary: GNU Hello, the "hello world" snap
description: |
GNU hello prints a friendly greeting.
grade: devel
confinement: devmode
parts:
gnu-hello:
source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
plugin: autotools
当我运行该snapcraft
命令时,我得到以下输出:
Launching a VM.
Build environment is in unknown state, cleaning first.
info failed: The following errors occurred:
instance "snapcraft-hello" does not exist
launch failed: Unable to find an image matching "core18". Please use `multipass find` for supported remotes and images.
An error occurred with the instance when trying to launch with 'multipass': returned exit code 2.
Ensure that 'multipass' is setup correctly and try again.
当我跑步时multipass find
我得到:
Image Aliases Version Description
18.04 bionic 20211021 Ubuntu 18.04 LTS
20.04 focal,lts 20211021 Ubuntu 20.04 LTS
21.04 hirsute 20211025 Ubuntu 21.04
21.10 impish 20211014 Ubuntu 21.10
daily:22.04 devel,jammy 20211025 Ubuntu 22.04 LTS
anbox-cloud-appliance latest Anbox Cloud Appliance
minikube latest minikube is local Kubernetes
有人能帮助我了解我遗漏了什么,以及为什么找不到 Core18 吗?
干杯!
- 乔希
答案1
我对这个 snapcraft 东西完全没有经验,所以我遵循和你相同的教程。
我猜测这个问题是因为你没有按照教程中所述设置“允许多重传递”,这意味着构建环境并不局限于虚拟机。
首次运行 snapcraft 时,系统可能会要求您授予安装 Multipass 的权限。Snapcraft 使用 Multipass 来简化构建过程并将构建环境限制在虚拟机中。它提供了最佳的构建体验,因此我们强烈建议您回答“y”。但是,如果您不想使用 Multipass,您也可以在本地、远程和使用 LXD 进行构建。有关详细信息,请参阅构建选项。
因此,我相信 snapcraft 正在尝试为 ubuntu Core 构建,但您正在 Ubuntu 桌面上构建,并且 multipass find 无法找到您的 snap 尝试构建到的目标设备。