Contents

Linux中snap简介

1. 概述

在本教程中,我们将学习如何使用Snap 包管理器、安装 snap 包(也称为 snap)、列出和管理已安装的 snap,以及在 Linux 系统上删除或禁用已安装的 snap。

包管理器是一组软件工具,可自动安装、升级、配置和删除计算机上的程序。Snap 是 Canonical 为使用 Linux 内核的操作系统开发的包管理器。

Snaps 是与所有依赖项打包在一起的程序,可以在所有主要的 Linux 发行版上运行。此外,快照在限制性安全沙箱内运行。因此,它们是安全的。此外,快照会自动更新。所以我们不需要继续手动检查更新。

2. Snap 生态系统的主要组成部分

Snap 生态系统中有五个主要组件:

  • Snapd:快照守护进程;它是在 Linux 系统上管理和维护快照的后台服务
  • Snap:用于在 Linux 系统上安装和管理 snap 的命令行界面工具
  • Channels:频道确定安装了哪个版本的快照并检查更新
  • Snap Store:开发人员发布他们的 snap 包和 Linux 用户安装它们的地方
  • Snapcraft:构建快照的框架工具

现在我们已经掌握了有关 Snap 生态系统的足够信息,让我们安装它。

3.安装Snapd

我们需要从安装snapd开始,它是在 Linux 系统上管理 snap 的后台服务。

3.1. 在 Debian / Ubuntu 上

要在 Debian/Ubuntu 上安装snapd,我们可以运行以下命令:

$ sudo apt update
$ sudo apt install snapd

安装完成后,我们应该检查安装的版本:

$ snap version
snap        2.55.5
snapd       2.55.5
series      16
elementary  6.1
kernel      5.13.0-44-generic

我们已经成功安装snapd

3.2. 在 Fedora 上

我们可以运行这个命令:

# dnf install snapd

之后,我们将在 Fedora 上成功安装snapd

3.3. 在 Centos 和其他基于 Red Hat 的发行版上

我们应该运行这些命令:

# yum install epel-release 
# yum install snapd

之后,我们将在系统上成功安装snapd

3.4. 关于 Manjaro

我们应该输入这个命令:

# pacman -S snapd

之后,我们将在 Manjaro 上成功安装snapd

4.启用系统单元

安装 *snapd 后,*我们应该运行这个命令来启用负责管理主 Snap 通信套接字的 systemd 单元:

$ sudo systemctl enable --now snapd.socket

运行上述命令后,Snap 生态系统将准备好进行交互。

5. 寻找快照

我们可以使用 snap命令与 Snap 生态系统进行交互。

snap find帮助我们在安装之前查找包。例如,如果我们要安装一个媒体播放器,我们可以查找它的类别:

$ snap find "media players"
Name                      Version                 Publisher      Notes    Summary
vlc                       3.0.16                  videolan✓      -        The ultimate media player
foobar2000                1.6.11                  mmtrt          -        foobar2000 is an advanced freeware audio player.
tizonia                   0.22.0                  tizonia        -        Cloud music from the Linux terminal
audio-recorder            3.0.5+rev1432+pkg-7b07  brlin          -        A free audio-recorder for Linux (EXTREMELY BUGGY)
mpv                       0.26.0                  casept         -        WARNING: THIS SNAP IS UNMAINTAINED. CONTACT ME IF YOU WISH TO MAINTAIN IT.
ktube-media-downloader    4                       keshavnrj      -        Download / Play Media from various websites

Snap 为我们扩展了媒体播放器类别。

6. 获取有关快照的更多信息

让我们获取有关 VLC 快照的更多信息:

$ snap info vlc
name:      vlc
summary:   The ultimate media player
publisher: VideoLAN✓
store-url: https://snapcraft.io/vlc
contact:   https://www.videolan.org/support/
license:   unset
description: |
  VLC is the VideoLAN project's media player.
  
  Completely open source and privacy-friendly, it plays every multimedia file and streams.
...

snap info为我们提供了有关 snap 的更多信息。

7. 安装快照

现在我们已经找到了我们想要安装的包,我们可以安装它:

$ sudo snap install vlc

这将从稳定频道安装最新的 VLC 媒体播放器。此外,如果我们想从不同的渠道安装,我们可以用一个标志来指定它。 我们可以选择四个风险级别:

  • Stable:适用于在生产环境中运行的绝大多数用户
  • Candidate:  适用于需要在稳定部署之前测试更新的用户,或验证特定问题是否已解决的用户
  • Beta:适用于想要测试最新功能的用户,通常在生产环境之外
  • Edge:适用于希望密切跟踪开发的用户

例如,让我们选择 beta 风险级别:

$ sudo snap install --channel=beta vlc
vlc (beta) 3.0.17.3-203-gaefbee5bdb from VideoLAN✓ installed

我们已经从 beta 频道成功安装了最新版本的 VLC。

8. 列出已安装的快照

要列出系统上安装的所有快照的摘要,我们可以运行snap list

$ snap list
Name    Version                   Rev    Tracking       Publisher     Notes
core18  20220428                  2409   latest/stable  canonical✓    base
ffmpeg  4.3.1                     1286   latest/stable  snapcrafters  -
snapd   2.55.5                    15904  latest/stable  canonical✓    snapd
vlc     3.0.17.3-203-gaefbee5bdb  3007   latest/beta    videolan✓     -

该命令已在屏幕上显示所有已安装快照的摘要。

此外,我们可以列出系统上安装的 snap 包的当前版本:

$ snap list vlc
Name  Version                   Rev   Tracking     Publisher  Notes
vlc   3.0.17.3-203-gaefbee5bdb  3007  latest/beta  videolan✓  -

此外,我们可以通过添加*–all*列出已安装快照的所有修订 :

$ snap list --all vlc
Name  Version                   Rev   Tracking     Publisher  Notes
vlc   3.0.17.3-203-gaefbee5bdb  3007  latest/beta  videolan✓  -

我们只有一个可用于 VLC 的修订版。

9. 更新快照

默认情况下,Snapd 每天检查四次更新,并在更新可用时安装更新。每次更新检查称为刷新。refresh 命令检查已安装的 snap 所跟踪的通道,并安装更新的版本(如果可用):

$ sudo snap refresh vlc
snap "vlc" has no updates available

没有可用于 VLC 的更新。我们还可以为所有已安装的快照运行刷新命令:

$ sudo snap refresh
All snaps up to date.

没有可用的更新。

10. 恢复快照

更新快照后,如果出于某种原因我们对新版本不满意,我们总是可以恢复到以前安装的版本:

$ sudo snap revert vlc

请注意,快照的数据也将恢复到之前的状态。

11. 启用/禁用和删除快照

如果我们不想再使用已安装的快照,但我们仍想保留快照及其数据以备后用,我们可以禁用它。稍后,如果我们想再次使用它,我们可以重新启用它:

$ sudo snap disable vlc
vlc disabled
$ sudo snap enable vlc
vlc enabled

要从系统中删除快照,我们可以运行snap remove

$ sudo snap remove vlc
vlc removed

或者,我们可以通过添加*–revision*来删除已安装快照的特定版本 。请注意,我们需要事先禁用选定的修订:

$ sudo snap remove --revision=2344 vlc
vlc (revision 2344) removed

我们已成功删除了 VLC 的特定版本。