包管理器是一组集成服务,有助于在计算机上安装、更新、删除和配置包/程序。
具体谈到 Linux 操作系统,您可以从各种包管理器中进行选择,例如 APT、YUM、RPM 和 Pacman。 这些包管理器中的每一个都有一些独特的功能,使它们与众不同。
然而,相对较新的包管理器 Snap 已成为传统包管理器的可行替代品。 让我们看看 Snap,它的优缺点,以及如何在 Linux 上安装和使用它。
什么是快照?
Snap 是 Ubuntu 的制造商 Canonical 为 Linux 平台开发的跨平台打包和部署系统。 它与大多数主要的 Linux 发行版兼容,包括 Ubuntu、Debian、Arch Linux、 Fedora、CentOS 和 Manjaro。
Snap 由三个基本组件组成:
1. 快照
就像任何其他包管理器一样,Snap 还具有称为 snaps 的包。 这些包与传统包管理器中的对应包不同,它们无依赖且易于安装。
快照以 。折断 扩展,它本质上是一个使用 SquashFS 格式的压缩文件系统,包含整个包模块,包括应用程序、它的依赖库和其他元数据。
2. 抢购
Snapd(或 snap daemon)使用 snap 元数据为系统上的应用程序设置安全沙箱。 由于它是一个守护进程,因此维护和管理 snap 环境的整个任务都在后台进行。
3.快照商店
Snap 位于 Snap Store 中,您可以像使用其他包管理器一样浏览和下载它们。 此外,您还可以选择将自己的 snap 包直接发布到 Snap Store,这是传统包管理器无法实现的。
除了这些元素之外,Snap 还有另一个重要的组件,称为 渠道. 通道负责定义安装的快照版本并跟踪系统上的更新。 因此,当您安装或更新快照时,您可以为每个操作指定要继续的通道。
回顾一下:
- 折断:用于指应用程序包格式和命令行界面。
- 抢购:帮助管理和维护快照的快照守护程序。
- 快照商店:所有快照的主页; 允许您上传自己的快照并浏览和安装新快照。
- 快手:一个可以帮助您构建自己的快照的框架。
Snap:好与坏
自从 Canonical 宣布 Snap 以来,Linux 社区就一直在讨论 Snap 是否是改进 Linux 上软件包分发的正确方法。 这导致了两个对立的阵营:一个支持 Snap,另一个则批评其长期的做法。
以下是关于 Snap 的所有优点和缺点的细分。
使用 Snap 的优势
- Snap 与有助于即时访问程序的依赖项(库)捆绑在一起,因为您不再需要手动安装缺少的依赖项以使其在您的系统上运行。
- 每个快照都在自己的容器化沙箱中运行,以避免干扰其他系统包。 因此,当您删除快照时,系统会删除其所有数据,包括依赖项,而不会影响其他包。 不用说,这也提供了一个更安全的环境,因为一个包无法访问另一个包的信息。
- 快照更新按设定的时间间隔自动进行快照。 因此,您始终在系统上运行最新版本的程序。
- Snap 使开发人员可以更轻松地直接向用户分发他们的软件,因此他们不必等待他们的 Linux 发行版推出。
- 除了上一点之外,让开发人员负责打包和分发他们的软件的另一个好处是,他们不必创建特定于发行版的包,因为它与所需的依赖项捆绑在一起。
快照的缺点
- 由于快照与依赖项捆绑在一起,因此它们的大小比其他包管理器的对应项更大并且占用更多的磁盘空间。
- 由于捆绑的依赖关系,快照作为压缩文件系统映像分发,您需要在安装之前先挂载它们。 因此,snap 的运行速度比传统软件包慢。
- 尽管 Snap 使开发人员能够将他们的快照直接分发给用户,但分发管道要求他们在 Canonical 上设置一个帐户并在其上托管他们的快照。 这违背了开源方法的真正本质,因为即使软件仍然是开源的,包管理系统也是由实体控制的。
- 允许开发人员分发软件包的另一个缺点是,这些软件包没有经过社区的严格检查和审查,因此存在包含恶意软件的风险——正如几年前所看到的那样。
- 由于 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
安装 snapd Fedora:
sudo dnf install snapd
在 Arch Linux 上:
git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si
在 Manjaro Linux 上安装 snapd:
sudo pacman -S snapd
安装后,您需要启用 系统 在您可以使用 Snap 之前,负责管理(某些)Linux 发行版上的 Snap 通信的单元。
如果您使用的是 Ubuntu 及其衍生版本以外的 Linux 发行版,请运行以下命令以启用 snapd systemd 单元:
sudo systemctl enable --now snapd.socket
最后,使用以下命令重新启动系统:
sudo reboot
如何在 Linux 上使用 Snap
使用 Snap 与使用其他包管理器非常相似。 由于您在上一步中已在系统上安装 snapd,因此您现在可以访问 snap 工具并轻松地与 Snap Store 中的 snap 交互。
寻找快照
使用 Snap,您可以浏览 Snap Store 并查找不同类别的软件包。 因此,如果要查找特定类别的快照,请使用以下命令语法:
snap find package_category
为了 example:
snap find development
如果您偶然发现了一个包并想了解更多关于它的信息,请使用 信息 使用默认命令的方法。
snap info package_name
为了 example,提取有关 GIMP 快照的信息:
snap info gimp
安装快照
最后,当您找到满足您要求的快照时,您可以通过运行以下命令进行安装:
sudo snap install package_name
安装后,您可以在程序中找到 应用 Linux 发行版的菜单。 然后,您可以直接从菜单或通过终端输入其名称来执行它。
列出已安装的快照
要获取系统上所有已安装快照的列表:
snap list
查看快照的版本信息
要了解快照的当前版本,请运行:
snap list package_name
更新快照
Snap 会自动更新您系统上安装的软件包。 为此,默认情况下 snapd 设置为每天检查四次更新。 但是,如果需要,您可以根据自己的喜好修改此刷新频率。
此外,如果需要,您可以通过运行以下命令执行即时刷新:
snap refresh
同样,您还可以使用以下命令检查快照的更新:
sudo snap refresh package_name
当您这样做时,Snap 会检查 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 应用程序的商店。