将应用打包为 Snaps
在 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相关推荐
- 如何把一个qmake的Ubuntu手机应用打包为一个snap应用
我们知道Ubuntu平台提供了良好的融合(convergence)设计.通过融合设计,使得我们的同样一个应用在不需要修改任何代码的情况下,重新打包就可以运行到不同的屏幕尺寸的设备上.当然,Canoni ...
- 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)
打包镜像上传至远程仓库: 1. 本地项目为 mytest-project 2. 仓库为阿里云镜像仓库 registry.cn-beijing.aliyuncs.com/test/mytest-proj ...
- 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?
使用Maven打包后生成 XXXXXXX-1.0.0-SNAPSHOT.jar 和 XXXXXXX-1.0.0-RELEASE.jar 的区别???? 首先,根本原因:这是因为你的pom.xml中的项 ...
- IDEA集成Docker插件实现一键自动打包部署微服务项目
一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...
- Redis 笔记(15)— 管道 pipeline(客户端将批量命令打包发送用来节省网络开销)
Redis 是一种基于客户端-服务端模型以及请求/响应协议的 TCP 服务.这意味着通常情况下一个请求会遵循以下步骤: 客户端向服务端发送一个查询请求,并监听 Socket 返回,通常是以阻塞模式,等 ...
- 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 后执行失败 ...
- 使用 alpine 打包镜像注意事项
Alpine Linux 是一个相当精简的操作系统,而基于它的 Docker 镜像可以仅有数 MB 的尺寸.如果软件基于这样的系统镜像之上构建而得,可以想象新的镜像也是十分小巧的. 由于基于 Alpi ...
- python打包成exe可执行文件指定进程名字
在上一篇中,我们讲了怎样用python编写一个简单的番茄钟程序.在这篇中,我们来试试把它打包成可独立运行的exe程序,方便我们每日使用使用. 安装pyinstaller 首先,我们需要安装一个叫pyi ...
- linux C++打包程序总结
linux C++打包程序总结 linux c++ 动态库打包 应用程序打包 动态库搜索路径 问题 linux环境下打包C++应用程序,包括依赖的动态库,以便解决程序发布后程序运行动态库缺失问题 解决 ...
最新文章
- python读书笔记二、文件基本操作
- java.util.Properties类,保存时保留注释及格式不变
- goldendict设置使用vlc或mplayer发音
- C++ STL学习笔记(2) 容器结构与分类
- The Normal Distributions Transform: A New Approach to Laser Scan Matching
- 想搞定大厂面试官?4面阿里拿到P7Offer通用流行框架大全
- shell 练习题02 一个文件里将内容三行显示为一行
- IDEA ideaIU点击无反应
- 苹果safari浏览器video视频无法播放
- 庄子 汝身非汝有也。
- 中国计算机网络设备制造业总体趋势免费版,致自己的心灵鸡汤说说,句句经典,引人深思!...
- proe5.0启动失败,光标转了几圈后没有任何反应
- 高仿Telegram IM Chat 聊天软件 即时通讯 在线聊天加社群 纯静态UI架构介绍
- C语言读取mp3文件的信息
- python 输入一个数,判断是不是水仙花数
- 51nod1326 遥远的旅途(spfa+dp)
- Ubuntu python3.6的安装
- 【软件质量】软件一致性
- 视频处理——ffmpeg
- 我爱自学网,各种教程