
软件包管理器是 Linux 用户必不可少的工具,它简化了软件的安装、更新和卸载流程。每个 Linux 发行版都使用自己的软件包管理器,例如 Ubuntu 和 Debian 的 APT、Fedora 和基于 RPM 的发行版的 DNF,以及 Arch Linux 的 Pacman。这种多样性可能会导致一些限制,因为这些管理器通常无法跨发行版运行。
通用软件包管理器允许跨任何 Linux 发行版安装软件。这些系统将所有必要的库和依赖项打包成单一格式,确保应用程序性能始终一致,无论底层发行版是什么。目前,最主要的两种通用软件包格式是 Snap 和 Flatpak。在本文中,我们将深入探讨它们各自的独特功能,以帮助您根据需求选择最佳方案。
了解 Snap
Snap 是由 Ubuntu 背后的公司 Canonical 创建的一种通用软件包格式。它通过将软件与所有必需的依赖项捆绑在一起来改变应用程序的分发方式,使其能够在任何配备 Snap 的 Linux 系统上无缝运行。这种独立的特性最大限度地减少了通常与 APT 等传统软件包管理器相关的兼容性问题。

使用 Snap,系统更新导致应用程序故障的可能性会降低,因为应用程序更新通常不会干扰操作系统。虽然这种架构降低了兼容性问题的风险,但用户应该注意,这些问题仍然可能出现。
安装和使用 Snap
Snap 已预装在大多数现代 Ubuntu 版本中,但也可以在其他发行版中手动设置。安装后,用户可以通过 Ubuntu 软件应用等图形工具或命令行轻松安装应用程序:
sudo snap install app-name
虽然可以手动侧载 Snap,但Snap Store作为主要存储库,提供广泛的应用程序,包括 Visual Studio Code、Discord 和许多游戏等流行软件。
Flatpak 简介
Flatpak 是 Linux 的另一个通用打包解决方案,旨在确保应用程序可以在各个发行版之间统一运行,而无需担心兼容性。
与 Snap 类似,Flatpak 将应用程序及其依赖项封装在一起,并在隔离的沙盒中执行,从而增强了稳定性和安全性。然而,Flatpak 处理依赖项的方法有所不同:Flatpak 使用共享运行时,即多个应用程序可用的通用库。这种方法简化了安装流程,减少了冗余,并将更新时间缩短了一半。

在应用程序分发方面,Snap 将所有内容集中到 Snap Store 下,而 Flatpak 则采用去中心化模式,允许在 Flathub 之外创建独立的远程应用程序。这种灵活性增强了 Flatpak 的生态系统。
Flatpak 优先考虑用户控制,允许使用 Bubblewrap 等工具对应用程序可以访问的资源(例如文件、网络和硬件)进行详细的权限设置。
安装和使用 Flatpak
如果您的 Linux 发行版上没有预装 Flatpak,则设置通常涉及两个步骤:首先,安装 Flatpak 框架,然后添加远程存储库,例如 Flathub。
要在您的系统上启动 Flatpak 安装,只需使用您现有的包管理器,如下所示(针对 Ubuntu/Debian 用户):
sudo apt install flatpak
接下来,添加 Flathub 存储库,它是 Flatpak 应用程序的主要来源:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
现在,您可以使用这个简单的命令从 Flathub 安装应用程序:
flatpak install flathub [application-name]
Flatpak 系统通过在后台自动下载必要的运行时来有效地管理依赖项。
Snap 和 Flatpak 的优缺点
为了对 Snap 和 Flatpak 做出明智的决定,让我们来分析一下它们各自的优缺点。
Snap 的优势:
- 与其他方案相比,开发人员可以更轻松地构建和管理包。
- 支持广泛的应用程序,从 CLI 工具到桌面软件。
- 使用基于 AppArmor 的沙盒的强大安全措施。
- 应用程序的自动后台更新。
- 由于其 Canonical 设计,与 Ubuntu 的集成非常好。
- 专有软件的广泛可用性(例如,Slack、Spotify、VS Code)。
Snap 的缺点:
- 应用程序的启动时间更长,尤其是在启动后。
- 由于依赖项与每个包捆绑在一起,因此包大小更大。
- 集中式生态系统,完全由 Canonical 维护。
- 配置可能具有挑战性,通常需要手动调整系统访问。
Flatpak 的优点:
- 与 Snap 相比,可用的桌面应用程序范围更广。
- 共享运行时最大限度地减少冗余并加快更新速度。
- 应用程序启动时间更快,提供接近原生的性能。
- 实施强大的安全协议和强大的沙盒。
- 多样化的权限设置,允许为用户提供量身定制的控制。
Flatpak的缺点:
- 由于多个运行时和应用程序导致磁盘使用量增加。
- 与标准包管理器相比,存储库的设置可能更加复杂。
- 对于需要广泛系统访问的应用程序,配置可能很复杂。
- 主要关注桌面应用程序,较少关注服务器或 CLI 工具。
Snap 和 Flatpak 之间的核心区别
虽然 Snap 和 Flatpak 都致力于促进跨发行版软件的安装,但它们的理念和运营生态系统却有很大不同。
Snap 由 Canonical 开发,通过集中式 Snap Store 运行。它强制自动更新,并兼容 GUI 和 CLI 应用程序。然而,由于其软件包中包含所有依赖项,因此软件包体积较大,启动时间也可能较慢。
相比之下,Flatpak 由社区驱动且去中心化,主要利用 Flathub 作为其最主要的存储库。它主要面向桌面软件,使用共享运行时来减小软件包大小,并且与 Snap 相比,通常提供更快的应用程序启动速度。与 Snap 不同,Flatpak 不强制自动更新,而是让用户自行决定何时刷新应用程序。
在 Snap 和 Flatpak 之间进行选择
在 Snap 和 Flatpak 之间进行选择,很大程度上取决于您的具体发行版和使用模式。Snap 在 Ubuntu 上表现最佳,而 Flatpak 则可在各种桌面环境中无缝集成,使其成为功能多样、软件可用性和稳定性更高的选择。
此外,许多 Linux 爱好者选择同时使用 Snap 和 Flatpak,因为某些应用程序在其中一个系统上比在另一个系统上更容易使用。这两个平台可以共存而不会发生冲突,让用户可以灵活地安装最符合自身需求的选项。
发表回复