在 Ubuntu 20.04、Raspberry Pi 4 上完成 snapcraft 教程时遇到问题

在 Ubuntu 20.04、Raspberry Pi 4 上完成 snapcraft 教程时遇到问题

我正在尝试打包我的第一个 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 尝试构建到的目标设备。

相关内容