什么是Snapcraft?

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

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

Snapcraft是一套捆绑在snapcraft命令下的工具,可以轻松地为多个Linux发行版创建(工艺)包 。 这些.snap软件包通常包含自包含应用程序,提供安全隔离,可以从Ubuntu软件商店安装,也可以通过snap install .snap命令手动snap install .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 

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

试驾Snapcraft

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

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

 sudo apt install git git clone https://github.com/ubuntu-core/snapcraft.git cd snapcraft/demos/gopaste 

请注意该目录中的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 

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

  1. :它从远程Github仓库中提取所需gopaste部分的代码
  2. 构建 :它在本地构建gopaste
  3. 阶段 :在构建之后,将部件放入单个目录树中,即“暂存区域”
  4. Snap :最终的.snap包是从暂存区域中的组装部件创建的

笔记:

  • 您将找到最终的快照文件gopaste_1.0_amd64.snap (在我的情况下,我在我的amd64桌面上构建了它,例如Raspberry Pi 2软件包将具有_armhf架构后缀)。
  • 您还可以单独运行每个命令: snapcraft pullsnapcraft buildsnapcraft stagesnapcraft snap
  • 使用snapcraft -h快速浏览所有可用命令。

这就是Snapcraft可以做的快速一瞥! 了解有关Snapcraft的更多信息>