Snap简介

Snap在 techopedia 上的定义是这样的:

Ubuntu Snappy is a package manager originally created by Canonical for the Ubuntu Phone distribution. Packages are called “snaps” and are designed to work across different Linux distributions, not just Ubuntu.

Ubuntu tutorials提供了 Basic snap usages 介绍。本文基本上是基于这个简介的提炼。

1. 开始

1.1 安装 snapd 服务

snapd 是管理snap的服务,支持很多Linux:

  • ubuntu
  • debian
  • suse
  • 等等

对于Ubuntu来说,16.04 LTS及以后版本都已自带 snapd 服务。之前的版本可以用如下方法进行安装:

1
$ sudo apt install snapd

2. 安装与运行 snap

2.1 搜索一个 snap

语法:

$ snap find part-of-snap-name

比如说我们想搜索一个含有”hello”的snap:

1
2
3
4
5
6
7
8
9
10
11
$ snap find hello
hello-node-snap 1.0.2 bhdouglass - A simple hello world command
hello-mdeslaur 2.10 mdeslaur - GNU Hello, the "hello world" snap
hello-snap 0.01 muhammad - GNU hello-snap, the "Hello, Snap!" snap
hello 2.10 canonical - GNU Hello, the "hello world" snap
hello-world 6.3 canonical - The 'hello-world' of snaps
hello-sergiusens 1.0 sergiusens - hello world example
hello-gabriell 0.1 gabriell - Qt Hello World example
hello-bluet 0.1 bluet - Qt Hello World example
so-hello-world 0.2 shadowen - the old classic
hello-huge 1.0 noise - a really big snap

搜索的返回结果包括:snap名字,版本号,作者,简述

2.2 安装与运行

安装一个 snap

语法:

$ sudo snap install _snap_fullname

例:

1
2
3
$ sudo snap install hello
hello (stable) 2.10 from 'canonical' installed

注意,第一次安装 snap 的时候,snapd 会下载系统所需的 base snap,这会多消耗一些时间;后续再装其他 snaps 就快了。

运行一个 snap

语法:

$ _snap_fullname

例:

1
2
$ hello
Hello, world!

2.3 列出已安装的 snaps

1
2
3
4
$ snap list
Name Version Rev Developer Notes
hello 2.10 20 canonical -
core 16.04.1 423 canonical -

注意,上面列出的那个 core snap 就是上文中提到的 base snap。

2.4 更新

实际上 snaps 会每天在后台自动更新。当然你也可以手动刷新:

1
2
3
4
5
6
$ sudo snap refresh hello
error: cannot refresh "hello": snap "hello" has no updates available
$ sudo snap refresh
core updated
hello 64.75 MB [=====================================>___] 12s

3. snap 的更多特性

3.1 snap 能提供一个或多个命令

当安装了一个 snap_example 的时候,我们可以用 snap_example.sub_command_name 来使用其提供的各种命令

3.2 snap 能提供服务

服务就是长时间运行的命令。

比如你安装了 shout 这个 snap,那么你就可以通过 http://localhost:9000 来与此服务交互

3.3 卸载 snap

语法:

$ snap remove _snap_fullname

例:

1
2
3
$ sudo snap remove hello-world
hello-world removed

snap 及其依赖、相关联的用户数据,都将被清理干净。如果 snap 是一个服务,则该服务先被停止然后清除。

4. snap 的不同版本

与其他软件一样,各个开发队伍对其 snap 也提供以下几种版本:

  • stable 为稳定版;
  • candidate 为尝鲜版,一般在稳定版发布前几日推出,以便用户可以尝鲜并测试;
  • beta 为未完全完成但已达到某些里程碑节点的版本;
  • edge 为刚刚开发出来的最前沿版本,仅通过冒烟测试,尚未充分测试

默认安装 stable 版。

4.1 切换其他版本

强制切换其他版本的命令如下:

语法:

$ sudo snap refresh _snap_fullname –channel=_channelname

sudo snap install _snap_fullname –_channelname

例:

1
2
3
$ sudo snap refresh hello --channel=beta
hello (beta) 2.10.1 from 'canonical' refreshed

这时,再调用 hello,执行的就是 beta 版的 hello 了

1
2
$ hello
Hello, snap padawan!

4.2 退回

如果发现某一个版本有问题,snap 支持退回一个版本。

语法:

$ sudo snap revert _snap_fullname

例:

1
2
3
4
5
$ sudo snap revert hello
hello reverted to 2.10
$ hello
Hello, world!

5. 其他资源

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器