您需要了解的有关 Snap 和 Snap Store 的一切

包管理器是一组集成服务,便于在计算机上安装、更新、删除和配置包/程序。

专门谈到 Linux 操作系统,您可以从各种包管理器中进行选择,例如 APT、YUM、RPM 和 Pacman。这些包管理器中的每一个都有一些独特的功能,使它们与众不同。

然而,一个相对较新的包管理器 Snap 已经成为传统包管理器的可行替代方案。让我们来看看 Snap,它的优缺点,以及如何在 Linux 上安装和使用它。

什么是快照?

Snap 是由 Ubuntu 的制造商 Canonical 为 Linux 平台开发的跨平台打包和部署系统。它与大多数主要的 Linux 发行版兼容,包括 Ubuntu、Debian、Arch Linux、Fedora、CentOS 和 Manjaro。

Snap 由三个基本组件组成:

1.按扣

就像任何其他包管理器一样,Snap 也具有称为 snaps 的包。与传统包管理器中的对应包不同,这些包是无依赖的且易于安装。

Snaps 以.snap扩展名结尾,它本质上是一个压缩文件系统,它使用 SquashFS 格式并包含整个包模块,包括应用程序、它的依赖库和附加元数据。

2. 快照

Snapd(或 snap 守护进程)使用 snap 元数据为系统上的应用程序设置安全沙箱。由于它是一个守护进程,因此维护和管理 snap 环境的整个任务都在后台进行。

3.快照商店

Snap 位于 Snap Store 中,您可以像使用其他包管理器一样浏览和下载它们。此外,您还可以选择将自己的快照包直接发布到 Snap Store,这是传统包管理器无法实现的。

除了这些元素之外,Snap 还有另一个重要的组件,称为通道。通道负责定义安装和跟踪系统更新的快照版本。因此,当您安装或更新快照时,您可以为这些操作中的每一个指定要继续的渠道。

回顾一下:

  • Snap :用于指代应用程序包格式和命令行界面。
  • Snapd :一个 Snap 守护进程,有助于管理和维护快照。
  • 快照商店:所有快照的主页;允许您上传自己的快照并探索和安装新的快照。
  • Snapcraft :一个框架,可帮助您构建自己的快照。

Snap:好与坏

自从 Canonical 宣布 Snap 以来,Linux 社区就 Snap 是否是改进 Linux 上软件包分发的正确方法引起了轰动。这引起了两个对立的阵营:一个支持 Snap,另一个则批评其从长远来看的方法。

以下是有关 Snap 的所有优点和缺点的细分。

使用 Snap 的优势

  1. Snap 与依赖项(库)捆绑在一起,便于即时访问程序,因为您不再需要手动安装缺少的依赖项以使其在您的系统上运行。
  2. 每个 snap 在自己的容器化沙箱中运行,以避免干扰其他系统包。因此,当您删除快照时,系统会删除其所有数据,包括依赖项,而不会影响其他包。不用说,这也提供了更安全的环境,因为一个包无法访问另一个包的信息。
  3. Snap 会按设定的时间间隔自动更新快照。因此,您始终在系统上运行最新版本的程序。
  4. Snap 使开发人员可以更轻松地将他们的软件直接分发给用户,因此他们不必等待 Linux 发行版推出。
  5. 除了前一点之外,让开发人员负责打包和分发他们的软件的另一个好处是他们不必创建特定于发行版的包,因为它与所需的依赖项捆绑在一起。

快照的缺点

  1. 由于快照与依赖项捆绑在一起,因此与其他包管理器中的对应项相比,它们的大小更大,占用的磁盘空间更多。
  2. 由于捆绑的依赖关系,快照作为压缩文件系统映像分发,您需要在安装之前先安装它们。因此,snap 的运行速度比传统包慢。
  3. 尽管 Snap 使开发人员能够将他们的快照直接分发给用户,但分发管道要求他们在 Canonical 上设置一个帐户并在其上托管他们的快照。这与开源方法的真实性质背道而驰,因为即使软件仍然是开源的,包管理系统也由实体控制。
  4. 允许开发人员分发软件包的另一个缺点是,这些软件包没有经过社区的严格检查和审查,因此存在包含恶意软件的风险——正如几年前所见。
  5. 由于 Snap 的后端仍然是封闭源代码并由 Canonical 控制这一事实,许多主要的 Linux 发行版并没有将 Snap 作为其系统上的默认包管理器的想法。

关于恶意软件风险,Snap 现在使用自动恶意软件测试来扫描用户上传的软件包中的恶意代码,然后再将其分发到 Snap Store。

相关:什么是恶意软件以及它是如何工作的?

如何在 Linux 中安装 snapd

由于 snapd 是 Snap 的重要组件,因此它是您需要在系统上安装的第一件事。但是,如果您正在运行以下任何 Linux 发行版,那么您的系统上已经预装了 snapd:KDE Neon、Manjaro、Ubuntu(16.04/4 LTS 和 20.04 LTS)、Zorin OS。

对于其他一些 Linux 发行版,您需要手动安装 snapd。

在 Debian/Ubuntu 上:

 sudo apt update
sudo apt install snapd

在 CentOS 和其他基于 RHEL 的发行版上安装 snapd 很容易:

 yum install epel-release
yum install snapd

在 Fedora 上安装 snapd:

 sudo dnf install snapd

在 Arch Linux 上:

 git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si

相关:如何在 Arch Linux 中安装和删除软件包

在 Manjaro Linux 上安装 snapd:

 sudo pacman -S snapd

安装后,您需要启用负责管理(某些)Linux 发行版上的 Snap 通信的systemd单元,然后才能使用 Snap。

如果您使用的是 Ubuntu 及其衍生产品以外的 Linux 发行版,请运行以下命令以启用 snapd systemd 单元:

 sudo systemctl enable --now snapd.socket

最后,使用以下命令重新启动系统:

 sudo reboot

了解更多:如何使用 systemctl 命令管理系统服务

如何在 Linux 上使用 Snap

使用 Snap 与使用其他包管理器非常相似。由于您在上一步中已在系统上安装了 snapd,因此您现在可以访问 snap 工具并轻松地与 Snap Store 中的 snap 进行交互。

寻找快照

使用 Snap,您可以浏览 Snap 商店并查找不同类别的软件包。因此,如果您想在特定类别中查找快照,请使用以下命令语法:

 snap find package_category

例如:

 snap find development

如果您偶然发现一个包并想了解更多信息,请使用带有默认命令的info方法。

 snap info package_name

例如,要提取有关 GIMP 快照的信息:

 snap info gimp

安装快照

最后,当您找到符合您要求的 snap 时,您可以运行以下命令进行安装:

 sudo snap install package_name

安装后,您可以在 Linux 发行版的“应用程序”菜单中找到该程序。然后,您可以直接从菜单或通过终端输入其名称来执行它。

列出已安装的 Snap

要获取系统上所有已安装快照的列表:

 snap list

查看快照的版本信息

要了解快照的当前版本,请运行:

 snap list package_name

更新快照

Snap 会自动更新您系统上安装的软件包。为此,默认情况下,snapd 设置为每天四次检查更新。但是,如果需要,您可以根据自己的喜好修改此刷新频率。

此外,如果需要,您可以通过运行以下命令执行即时刷新:

 snap refresh

同样,您还可以使用以下命令检查快照的更新:

 sudo snap refresh package_name

当您这样做时,Snap 会检查由 Snap 跟踪的频道是否有更新的版本。如果有可用更新,它会自动下载并安装。

相关:如何在几秒钟内更新 Linux 上的一个或所有应用程序

恢复到以前使用的 Snap 版本

如果您在更新快照后遇到问题,可以通过运行以下命令恢复到以前的版本:

 sudo snap revert package_name

禁用和启用快照

如果您不使用快照,但将来可能需要使用,您可以暂时禁用它并在需要时重新打开它。这样,您就不必经历卸载和重新安装 snap 的繁琐过程。

要禁用捕捉,请键入:

 sudo snap disable package_name

当你想启用它时,只需运行:

 sudo snap enable package_name

删除快照

最后,要删除系统上将来可能不需要的未使用快照:

 sudo snap remove package_name

在 Linux 上成功设置 Snap

如果您已经按照指南进行到这里,您将在 Linux 系统上启动并运行 Snap。随后,您应该能够找到并下载您需要的大部分软件包。当然,与任何其他包管理器的情况一样,您可能需要一些时间才能适应 Snap。但是一旦你掌握了它,你就可以有效地使用它。

尽管如此,使用 Snap 既有优点也有缺点,在开始之前你应该考虑到这些。如果您想要 Snap 的替代品——一个与免费和开源方法很好地一致的选择——请查看 Flatpaks 以更好地了解哪个包管理器具有更好的下载 Linux 应用程序的存储。