什么是Snapcraft?


16

我一直在尝试在Raspberry Pi 2设备上使用敏捷的Ubuntu内核,并且听说可以使用Snapcraft进行开发。现在,我听说在Ubuntu 16.04和其他发行版的台式机和服务器上都可以使用快照。

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

Answers:


27

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

简而言之,作为开发人员,您将使用常规工具编写代码,并让Snapcraft负责将其组装以进行分发。Snapcraft还擅长使开发人员将其现有应用程序移植到任何支持快照的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

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

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

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. Pull:从远程Github存储库中从所需的gopaste部分中提取代码
  2. 构建:它在本地构建gopaste
  3. 阶段:构建之后,将零件放入单个目录树中,即“临时区域”
  4. 捕捉:最终的.snap程序包是由暂存区中的组装零件创建的

笔记:

  • 您会发现最终的快照文件为gopaste_1.0_amd64.snap(请注意,我是在amd64桌面上构建的,例如Raspberry Pi 2软件包具有_armhf体系结构后缀)。
  • 您也可以单独运行每个命令:snapcraft pullsnapcraft buildsnapcraft stage或者snapcraft snap
  • 使用snapcraft -h可用的所有命令的简要概述。

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


9
我对此表示赞赏,但尽管我不是snapcraft开发人员之一,但我也不确定在Ubuntu网站上如何解释创建Ubuntu snap的工具以及如何使用它可能构成垃圾邮件。
David Planella

功能列表上的文字触发了我。还有"And that's it for a quick glimpse of what Snapcraft can do!"
Ismael Miguel

1
我在这里同意戴维。
dholbach

1
因为代码现在在Github上,所以应该用等效的git命令替换bzr部分。
lapisdecor

1
另外,如果您使用的是git而不是bzr,则需要安装git和gcc。
lapisdecor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.