snap命令详解

1. snap简介

Snap 是一个软件部署和软件包管理系统,由 Canonical 公司开发,最初用于 Ubuntu 移动操作系统。Snap 包称为“snap”,工具名为“snapd”,可在多种 Linux 发行版上运行,完成发行上游主导的软件部署。该系统的设计面向手机、云、物联网和台式机。

Snap软件类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间。

Snap 包具有以下优点:

  • 跨平台:Snap 包可以在不同的 Linux 发行版上运行,而不需要进行任何修改。
  • 安全:Snap 包可以使用安全的签名来验证其完整性和来源。
  • 易于管理:Snap 包可以使用 snapd 工具进行集中管理。

Snap 包可以用于安装各种类型的应用程序,包括桌面应用程序、服务、游戏、工具和媒体播放器。

以下是一些使用 Snap 包的优势:

  • 简化安装:Snap 包可以通过一个简单的命令进行安装,无需手动下载和解压缩。
  • 自动更新:Snap 包会自动更新到最新版本,无需用户干预。
  • 隔离:Snap 包与系统的其他部分隔离,可以防止相互影响。
  • Snap 包是 Linux 软件部署和软件包管理的一种新方法。它具有跨平台、安全、易于管理等优势,可以简化软件的安装、更新和管理。

2. Snap 的工作原理如下

  • 开发者将应用程序编译为 Snap 包。Snap 包是一个自给自足的软件包,包含了应用程序的代码、依赖项、配置文件和数据。
  • 用户使用 snapd 工具来安装 Snap 包。Snapd 工具会从 Snap 存储库中下载 Snap 包,并将其安装到系统中。
  • 用户可以使用 snapd 工具来更新 Snap 包。Snapd 工具会自动检查 Snap 存储库中的更新,并将更新安装到系统中。

Snap 包的工作原理可以分为以下几个步骤:

  • 编译:开发者使用 Snapcraft 工具来编译应用程序为 Snap 包。Snapcraft 工具会自动将应用程序的依赖项打包到 Snap 包中。
  • 下载:用户使用 snap 命令来下载 Snap 包。Snap 命令会从 Snap 存储库中下载 Snap 包。
  • 安装:Snapd 工具会将 Snap 包安装到系统中。Snapd 工具会创建一个独立的 Snap 容器来运行 Snap 包。
  • 更新:Snapd 工具会自动检查 Snap 存储库中的更新。如果有更新,Snapd 工具会将更新安装到系统中。

Snap 包的隔离是通过 Snap 容器来实现的。Snap 容器是一个独立的操作系统环境,包含了 Snap 包所需的所有资源。Snap 包与系统的其他部分隔离,可以防止相互影响。

Snap 包的安全性是通过签名机制来实现的。Snap 包会使用安全的签名来验证其完整性和来源。用户可以通过验证签名来确保 Snap 包是来自可信任的来源。

Snap 包的跨平台性是通过 Snap 工具来实现的。Snapd 工具可以安装在多种 Linux 发行版上。Snap 包可以通过 Snapd 工具在不同的 Linux 发行版上运行。

总而言之,Snap 是一个具有跨平台、安全、易于管理等优势的软件部署和软件包管理系统。它可以简化软件的安装、更新和管理。

2.1. Snap 容器

Snap 容器是 Snap 包的运行环境。它是一个独立的操作系统环境,包含了 Snap 包所需的所有资源。Snap 包与系统的其他部分隔离,可以防止相互影响。

Snap 容器的工作原理如下:

  1. 当用户安装 Snap 包时,Snapd 工具会创建一个 Snap 容器。Snap 容器是一个独立的文件系统,包含了 Snap 包的代码、依赖项、配置文件和数据。
  2. Snap 容器会运行在一个由 Snapd 工具管理的隔离环境中。该环境与系统的其他部分隔离,可以防止相互影响。
  3. Snap 容器的隔离是通过多个机制来实现的,包括:
  • 文件系统隔离:Snap 容器使用自己的文件系统,与系统的其他部分隔离。
  • 网络隔离:Snap 容器可以使用自己的网络连接,与系统的其他部分隔离。
  • 进程隔离:Snap 容器中的进程与系统的其他部分隔离。

Snap 容器的安全性是通过以下机制来实现的:

  • 签名机制:Snap 包会使用安全的签名来验证其完整性和来源。
  • 隔离机制:Snap 容器与系统的其他部分隔离,可以防止相互影响。

Snap 容器的跨平台性是通过以下机制来实现的:

  • Snapd 工具:Snapd 工具可以安装在多种 Linux 发行版上。
  • Snap 包:Snap 包可以使用 Snapd 工具在不同的 Linux 发行版上运行。

总而言之,Snap 容器是具有安全、隔离、跨平台等优势的软件运行环境。它可以为 Snap 包提供一个安全、稳定、可靠的运行环境。

3. snap常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

# 查看版本
snap version

# 查找软件
snap find "media player"

# 查看软件信息
snap info vlc

# 安装软件
snap install vlc # 默认使用stable channel
snap install vlc --channel=edge # 指定 channel
snap switch vlc --channel=stable # 切换channel

# snap 安装软件目录在 `/snap/bin`,该目录已加入 `$PATH`,因此可以直接在命令行运行相应的程序。

# 列出所有已安装的软件
snap list
snap list --all vlc # 列出所有已安装的版本

# 更新已安装的软件
snap refresh vlc

# 回滚软件版本,snap默认会保留2各版本
snap revert vlc

# 启用/禁用软件
snap enable/disable vlc

# 删除软件
snap remove vlc # 有些系统会缓存31天
snap remove vlc --purge # 彻底清除

# 后台服务列表
snap services

# 启动、停止、重启后台服务
snap restart lxd
snap restart lxd.daemon

snap start lxd.daemon
snap start --enable lxd.daemon

snap stop lxd.daemon
snap stop --disable lxd.daemon

# 查看后台服务日志
snap logs lxd
snap logs lxd -f # 持续监控

# 通过snap安装包安装软件, dangerous意味着snap未经过签名
snap install demo-snap_0.1_amd64.snap --dangerous --devmode

4. 参考文档

Linux软件包管理工具 Snap 常用命令