将应用打包为 Snaps

来源:互联网 发布:java语言图形界面 编辑:程序博客网 时间:2024/06/05 15:29

在 Linux 上分发应用不总是那么简单。你有不同的打包格式,基础系统,可用的库,和发行版本节奏,它们都让人头疼。但是现在我们有了更简单的东西:Snaps。

Snaps 是开发者打包他们的应用的一种新的方式,相对于更多传统的打包格式,比如 .deb,.rpm 和其它的那些,它具有许多优势。Snaps 是安全的,相互隔离的,主机系统使用 AppArmor 这样的技术,它们是跨平台的,且它们是自包含的,这允许开发者打包它们的应用需要的软件。这种沙盒隔离也会提升安全性并允许应用,及整个基于 snap 的系统在出现问题时回滚。Snaps 真的是 Linux 应用打包的未来。

创建一个 snap 一点也不难。首先你需要基于 snap 的运行时环境,它能够在桌面环境中理解并执行 snaps;这个工具被称为 snapd,且在所有 Ubuntu 16.04 系统中是默认安装的。接下来你需要工具来创建 snaps,Snapcraft,它可以通过如下命令简单的安装:

$ sudo apt-get install snapcraft

一旦这个环境可用,你就可以 snapping 了。

Snaps 使用一个特殊的 YAML 格式化的命名文件 snapcraft.yaml,它定义了如何打包应用,以及它需要的任何依赖。看一个简单的应用来说明这一点,下面的 YAML 文件是一个真实的如何 snap moon-buggy 游戏的例子,在 Ubuntu archive 中可以找到它。

name: moon-buggyversion: 1.0.51.11summary: Drive a car across the moondescription: |A simple command-line game where you drive a buggy on the moonapps:play:command: usr/games/moon-buggyparts:moon-buggy:plugin: nilstage-packages: [moon-buggy]snap:– usr/games/moon-buggy

上面的代码演示了一些新的概念。第一个部分是所有让你的应用在应用商店中可以被找到的东西;设置打包元数据名称,版本,概要,和描述。apps 部分实现了 play 命令,它指出了 moon-buggy 可执行文件的位置。parts 部分告诉 Snapcraft,关于在将应用与它所有依赖的东西一起构建时所需要的插件。在这个简单的例子中,所有我们需要的东西就是来自于 Ubuntu archive 的 moon-buggy 应用本身,Snapcraft 将关心其余的东西。

在放有 snapcraft.yaml 文件的目录下运行 snapcraft 命令,将创建 moon-buggy_1.0.51.11_amd64.snap,它可以通过运行如下命令来安装:

$ snap install moon-buggy_1.0.51.11_amd64.snap

要查看复杂一点的 snapping 一些东西的例子的话,比如基于 Electron 的 Simplenote 应用,请看这里,线上的用户指南在这里,其对应的代码位于 GitHub。更多例子可以在 Ubuntu 开发者网站 找到。

原文

参考文档:

将 Linux 软件打包成 Snap 软件包

原创粉丝点击