众所周知,Linux系统上的包管理或软件安装可能非常令人困惑,尤其是对于Linux新手用户来说,因为不同的Linux发行版使用不同的传统包管理系统。在大多数情况下,最令人困惑的部分是包依赖性解析/管理。
例如,基于Debian发行版(例如Ubuntu和Linux Mint)使用的.deb
软件包是通过dpkg软件包管理系统进行管理的。此外,基于RHEL的发行版(例如CentOS Stream、Rocky Linux和AlmaLinux)使用.rpm
软件包,这些软件包通过rpm软件包管理系统进行管理。
过去几年,随着通用或跨发行版包管理工具的兴起,Linux生态系统中的包管理和分发工作也变得相对简单。因为这些工具允许开发人员通过单个构建将其软件或应用程序打包到多个Linux发行版,从而使用户可以轻松地在多个受支持的发行版上安装相同的软件包。
在本文当中,小编将整理适用于Linux系统的前三个开源通用或跨分发包管理系统,如果你是Linux系统,不妨一起来看看吧。
1、Snap–通用包格式
Snap是一种流行的开源应用程序/包格式和包管理系统,由Ubuntu Linux的制造商Canonical开发。多个Linux发行版现在支持snap,包括Ubuntu、Debian、Fedora、Arch Linux、Manjaro和CentOS/RHEL。
轻松安装和更新
Snap应用程序是一个跨发行版应用程序,与其所有依赖项(无依赖项)捆绑在一起,以便在任何支持Snap的Linux发行版上轻松安装并自动更新(应用程序始终是最新的)。快照可以在桌面、服务器、云或 IoT(物联网)中运行。
要创建或捕捉应用程序,可以使用Snapcraft、一个框架和用于构建捕捉的强大命令行工具。要在Linux中安装和使用Snap,需要安装Snapd(或Snappy守护进程),这是一种使Linux系统能够处理.snap
文件的后台服务。Snap的实际安装是使用Snap命令行工具完成的。
安全与隔离
由于Snap在限制(不同且可配置的限制级别)下运行,因此默认情况下快照是安全的。重要的是,需要访问其限制之外的系统资源的快照会采用由快照创建者根据快照的要求精心选择的“接口”。这使你能够运行应用程序,而不会影响基本操作系统的稳定性和灵活性。
此外,Snap包管理系统使用称为通道的概念(由轨道、风险级别和分支组成并细分)来确定安装和跟踪更新的Snap版本。Snap还会自动更新,你可以手动管理该过程。
要查找并安装Snap,请在Snap商店(开发人员可以共享Snap的地方)中搜索它,或使用命令行进行安装。
2、Flatpak–跨发行版兼容性
Flatpak是一个著名的开源框架,用于在Linux发行版上分发桌面应用程序。Flatpak由独立社区开发,允许在几乎任何Linux发行版上安装和运行单个应用程序版本。
Flatpak总共支持25个发行版,包括Fedora、Ubuntu、RHEL、CentOS、OpenSUSE和Arch Linux,并且还可以在Raspberry Pi上运行。Flatpak的运行时提供应用程序可以利用的公共库平台。但是,它也使你可以非常轻松地完全控制依赖项,可以将库捆绑为应用程序的一部分。
Flatpak附带易于使用的构建工具,并为开发人员构建和测试其应用程序提供一致的环境(跨设备相同且与用户已有的环境相似)。
沙箱增强安全性
Flatpak通过将每个应用程序放入其沙箱中来确保安全,这样应用程序就不会干扰主系统或其它应用程序。当你处理不确定来源的应用程序时,它非常方便。
用户和开发人员友好
Flatpak的一个有用的方面是向前兼容性,即相同的Flatpak可以在同一发行版的不同版本上运行,包括开发人员尚未发布的版本。它还努力并继续与新版本的Linux发行版兼容。
如果你是开发人员,可以通过Flathub向Linux用户提供您的应用程序,Flathub是一项用于在所有发行版上分发应用程序的集中服务。
3、AppImage:便携式替代方案
AppImage也是一种开源包格式,允许开发人员打包一次应用程序,该应用程序可在所有主要Linux桌面发行版上运行。与以前的包格式不同,使用AppImage不需要安装包。只需下载想要使用的应用程序,使其可执行,然后运行它,就这么简单。它支持大多数32位和64位Linux桌面。
无需安装
使用AppImage,无需安装任何东西。你可以将这些包放在USB驱动器上、共享它们并运行应用程序,而无需更改系统。这对于便携式Linux和实时系统来说非常有用。
广泛的兼容性
AppImage具有许多优点。对于开发人员来说,无论用户运行的是哪种Linux发行版和版本,它都使他们能够接触到尽可能多的用户。对于用户来说,他们不需要担心应用程序依赖关系,因为每个AppImage都与其所有依赖项捆绑在一起(一个应用程序=一个文件)。使用AppImage尝试新版本的应用程序也很容易。
对于支持大量桌面系统并通常阻止用户安装可能破坏系统的应用程序的系统管理员来说,他们无需再担心。使用AppImage,系统保持完整,因为用户无需安装应用程序即可运行它们。
Snap、Flatpak和AppImage比较
以下是Snap、Flatpak和AppImage三种通用包管理器的的简单比较情况:
特征 | Snap | Flatpak | AppImage |
包格式 | 独立压缩文件 | 独立压缩文件 | 单个可执行文件 |
沙盒 | 支持(默认) | 不支持(默认) | 不支持 |
自动更新 | 是 | 可选 | 否 |
安装 | 需要snapd守护进程 | 需要Flatpak运行时 | 不需要安装 |
root权限 | 需要root权限才能安装 | 不需要root权限即可安装 | 不需要root权限即可运行 |
选择哪个包管理器比较好?
如果你正在寻找一个安全且易于使用且具有自动更新功能的包管理器,那么Snap是一个不错的选择。如果正在寻找一个更灵活的包管理器,可用于打包任何类型的应用程序,那么Flatpak是一个不错的选择。如果你正在寻找不需要安装或root权限的包管理器,那么AppImage是一个不错的选择。
需要注意的是,这三个包管理器仍在开发中,因此可能存在一些错误或缺少功能。不过,它们都得到积极维护并定期更新,所以可以放心使用。
总结
虽然通用或交叉分发包格式是在Linux生态系统中构建和分发软件的下一代技术,但是,目前传统的包管理系统仍然是主要的使用类型。如果你觉得传统的包管理使用不放面,那么不妨试试上面比较不错的通用包管理器。