将应用打包为 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 软件包
- 将应用打包为 Snaps
- 将android应用打包发布为APK文件
- 将WEX5打包的应用设置为开机自启动
- Python for Android,将你的Python应用打包为APK文件
- electron 将pc端(vue)页面打包为桌面端应用
- 怎样将控件打包为cab文件
- 将Java代码打包为exe文件
- 将Java代码打包为exe文件
- 将Java代码打包为exe文件
- 将Java代码打包为exe文件
- 将Java代码打包为exe文件
- 将Java代码打包为exe文件
- 将app打包为Deb全过程
- 将maven项目打包为可执行jar
- 将项目打包为一个可执行jar
- 将JNI模块打包为AAR模块
- java将文件打包为zip
- 如何将Py文件打包为exe
- 【JavaScript】省市联动示例
- 7.如何在Visio中写下角标和上角标
- 继承HorizontalScrollView的自定义轮播控件
- android极少人知道的冒号小技巧
- Android自定义时间控件选择开始时间到结束时间
- 将应用打包为 Snaps
- 输入校验一(js实现用户名校验)
- 指针与函数_函数指针作参数
- ES6关于函数的扩展知识(ECMAScript 6 入门笔记)
- mapreduce简单通俗案例,mapreduce具体是什么
- RAC中的EM切换节点
- IOS APP测试以及上架发布流程
- myeclipse10配置插件的方法
- UNITY平滑旋转一定角度