在 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-buggy
version: 1.0.51.11
summary: Drive a car across the moon
description: |
A simple command-line game where you drive a buggy on the moon
apps:
play:
command: usr/games/moon-buggy
parts:
moon-buggy:
plugin: nil
stage-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相关推荐

  1. 如何把一个qmake的Ubuntu手机应用打包为一个snap应用

    我们知道Ubuntu平台提供了良好的融合(convergence)设计.通过融合设计,使得我们的同样一个应用在不需要修改任何代码的情况下,重新打包就可以运行到不同的屏幕尺寸的设备上.当然,Canoni ...

  2. 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)

    打包镜像上传至远程仓库: 1. 本地项目为 mytest-project 2. 仓库为阿里云镜像仓库 registry.cn-beijing.aliyuncs.com/test/mytest-proj ...

  3. 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?

    使用Maven打包后生成 XXXXXXX-1.0.0-SNAPSHOT.jar 和 XXXXXXX-1.0.0-RELEASE.jar 的区别???? 首先,根本原因:这是因为你的pom.xml中的项 ...

  4. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  5. Redis 笔记(15)— 管道 pipeline(客户端将批量命令打包发送用来节省网络开销)

    Redis 是一种基于客户端-服务端模型以及请求/响应协议的 TCP 服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听 Socket 返回,通常是以阻塞模式,等 ...

  6. Pyinstaller 打包 torch 后执行失败 OSError: could not get source code

    1. 问题现象 系统环境 Python 3.6.9 torch 1.2.0 torchvision 0.4.0 Pyinstaller 4.5.1 Pyinstaller 打包 torch 后执行失败 ...

  7. 使用 alpine 打包镜像注意事项

    Alpine Linux 是一个相当精简的操作系统,而基于它的 Docker 镜像可以仅有数 MB 的尺寸.如果软件基于这样的系统镜像之上构建而得,可以想象新的镜像也是十分小巧的. 由于基于 Alpi ...

  8. python打包成exe可执行文件指定进程名字

    在上一篇中,我们讲了怎样用python编写一个简单的番茄钟程序.在这篇中,我们来试试把它打包成可独立运行的exe程序,方便我们每日使用使用. 安装pyinstaller 首先,我们需要安装一个叫pyi ...

  9. linux C++打包程序总结

    linux C++打包程序总结 linux c++ 动态库打包 应用程序打包 动态库搜索路径 问题 linux环境下打包C++应用程序,包括依赖的动态库,以便解决程序发布后程序运行动态库缺失问题 解决 ...

最新文章

  1. python读书笔记二、文件基本操作
  2. java.util.Properties类,保存时保留注释及格式不变
  3. goldendict设置使用vlc或mplayer发音
  4. C++ STL学习笔记(2) 容器结构与分类
  5. The Normal Distributions Transform: A New Approach to Laser Scan Matching
  6. 想搞定大厂面试官?4面阿里拿到P7Offer通用流行框架大全
  7. shell 练习题02 一个文件里将内容三行显示为一行
  8. IDEA ideaIU点击无反应
  9. 苹果safari浏览器video视频无法播放
  10. 庄子 汝身非汝有也。
  11. 中国计算机网络设备制造业总体趋势免费版,致自己的心灵鸡汤说说,句句经典,引人深思!...
  12. proe5.0启动失败,光标转了几圈后没有任何反应
  13. 高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI架构介绍
  14. C语言读取mp3文件的信息
  15. python 输入一个数,判断是不是水仙花数
  16. 51nod1326 遥远的旅途(spfa+dp)
  17. Ubuntu python3.6的安装
  18. 【软件质量】软件一致性
  19. 视频处理——ffmpeg
  20. 我爱自学网,各种教程

热门文章

  1. 超市买苹果变量的定义和使用
  2. SpringBoot_入门-HelloWorld细节-场景启动器(starter)
  3. 单点登录Redis存储Session及SessionId问题说明与集群实战-2
  4. JAVA多线程和并发
  5. css box 等高布局,css实现等高布局有哪些方式
  6. ad09只在一定范围内查找相似对象_kafka日志段中的二分查找
  7. K8S之HELM详细介绍
  8. python的f-string 格式化字符串
  9. 【报错笔记】关于tomcat启动不了,闪退问题。
  10. Java开源诊断工具 Arthas 发布v3.1.0