什么是 Snapcraft?

Dav*_*lla 15 ubuntu-core raspberrypi snap

我一直在 Raspberry Pi 2 设备上尝试使用 snappy Ubuntu 核心,我听说我可以使用 Snapcraft 在它上面进行开发。现在我听说 Ubuntu 16.04 和其他发行版的桌面和服务器上可以使用 snap。

什么是 Snapcraft,我该如何使用它?

Dav*_*lla 27

Snapcraft 是一捆绑在snapcraft命令下的工具,用于为多个 Linux 发行版轻松创建(制作)包。这些 .snap 包通常包含独立的应用程序,提供安全隔离,并且可以从 Ubuntu 软件商店或通过snap install <snap-name>.snap命令手动安装。

简而言之,作为开发人员,您将使用常规工具编写代码,并让 Snapcraft 负责组装以进行分发。Snapcraft 还擅长让开发人员将他们现有的应用程序移植到任何支持 snap 的 Linux 平台。

Snapcraft:

  • 智能:它从远程源获取、构建和组装各种软件(部件)到最终的 .snap 包中,其中包含运行所需的所有依赖项
  • 需要一个配方:它依赖于一个snapcraft.yaml文件,该文件指定了创建包所需的部件插件
  • 通过插件扩展。虽然它附带了一组最常见的构建系统插件来满足广泛的应用程序构建,但它可以轻松地使用新插件进行扩展

3 分钟的 Snapcraft 之旅

在 Ubuntu 上安装 Snapcraft

您将需要 Ubuntu 16.04 LTS 才能使用 Snapcraft。打开一个终端与Ctrl+ Alt+t和简单地用这个命令安装Snapcraft:

sudo apt install snapcraft
sudo apt install build-essential  # Optional, but useful for different builds
Run Code Online (Sandbox Code Playgroud)

如果您使用的是其他发行版,请查看替代安装说明 >

试驾 Snapcraft

以下示例制作了一个包,其中包含允许您粘贴和共享的服务。完成后,您可以在 snappy 设备上手动安装它以进行测试或将其上传到商店供其他用户使用。

首先,我们打开一个终端并从示例存储库下载示例:

sudo apt install git
git clone https://github.com/ubuntu-core/snapcraft.git
cd snapcraft/demos/gopaste
Run Code Online (Sandbox Code Playgroud)

请注意该snapcraft.yaml目录中的文件,该文件指定了一项服务以及组装最终 .snap 所需的部件。您可以选择使用文本编辑器检查它。

现在snapcraft在终端上运行命令。这将导致所有 snapcraft 子命令按顺序运行以构建部件并将结果放入最终的 .snap 包中。在开发过程中,您通常会单独运行这些步骤,直到您确信整个构建和组装工作正常。

$ snapcraft 
Pulling gopaste 
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go get -t -d github.com/wisnij/gopaste/gopasted
Building gopaste 
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go build github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build go install github.com/wisnij/gopaste/gopasted
env GOPATH=/tmp/snapcraft/examples/gopaste/parts/gopaste/build cp -a /tmp/snapcraft/examples/gopaste/parts/gopaste/build/bin /tmp/snapcraft/examples/gopaste/parts/gopaste/install
Staging gopaste 
Snapping gopaste 
Generated 'gopaste_1.0_amd64.snap' snap
Run Code Online (Sandbox Code Playgroud)

在命令的输出中,您可以看到 snapcraft 为您运行的步骤:

  1. Pull:它从远程 Github 存储库中提取所需的 gopaste 部分的代码
  2. Build:它在本地构建 gopaste
  3. Stage:构建完成后,部件被放入单个目录树中,即“暂存区”
  4. Snap:最终的 .snap 包是从暂存区的组装零件创建的

笔记:

  • 您将找到最终的 snap 文件gopaste_1.0_amd64.snap(注意,在我的情况下,我是在 amd64 桌面上构建它的,例如 Raspberry Pi 2 包将具有_armhf架构后缀)。
  • 您也可以单独运行每个命令:snapcraft pullsnapcraft buildsnapcraft stage或者snapcraft snap
  • 使用snapcraft -h可用的所有命令的简要概述。

这就是快速了解 Snapcraft 的功能!了解有关 Snapcraft 的更多信息 >

  • 我很欣赏评论,但虽然我不是 snapcraft 开发人员之一,但我也不确定如何解释创建 Ubuntu snap 的工具是什么以及如何使用它,在 Ubuntu 网站上,可能会构成垃圾邮件。 (9认同)
  • 此外,如果您使用的是 git 而不是 bzr,要做到这一点,您需要安装 git 和 gcc。 (2认同)