Linux 系统受欢迎的原因有很多,但安装应用程序并不是其中之一。 Linux 中的应用程序以包的形式提供,并且有各种风格。 打包系统在安装、可用性和更新机制方面有所不同。
下面,我们将查看和比较三种主要的包格式:Snap、AppImage 和 Flatpak,它们都独立于发行版。
什么是包格式?
包格式是包含程序代码和运行它们所需的元数据的档案。 Linux 支持多种打包格式,开发人员可以选择以他们想要的任何格式打包他们的应用程序。 作为用户,您需要下载所需的包并通过包管理器安装它以运行应用程序。
Ubuntu 和其他基于 Debian 的发行版使用 .deb 原生封装格式,而 Fedora、RHEL 和 CentOS 使用 .rpm. 原生包速度很快,因为它们是专门为系统设计和编译的,它们还共享库,使应用程序更小。 但是,本机包需要用户自己更新和维护依赖项。
Snap、AppImage 和 Flatpak 等发行版独立软件包提供可以在不同机器上运行的应用程序。 它们消除了许多 Linux 用户每天面临的依赖问题,并使开发人员的生活变得更加轻松。 但是,这也会导致更大的二进制文件。
Snap 与 AppImage 与 Flatpak
如上所述,Snap、AppImage 和 Flatpak 这三个都提供了独立于 Linux 发行版打包应用程序的方法。 让我们来一个 close 看看它们的一些显着特点以及优缺点。
1. 捕捉
Snap 是由 Canonical 开发的打包系统,并得到了重要的企业支持。 当您安装应用程序的 snap 版本时,它包括运行该应用程序所需的所有库和依赖项。 这节省了应用程序维护人员为不同系统推出不同构建所需的时间。
您可以直接从 Snap Store 或通过命令行安装快照。 许多流行的 Linux 发行版都采用了 Snap,包括 Ubuntu、Manjaro、Linux Mint、Debian、Kali 和 RHEL。 Snap 应用程序的另一个主要优点是它们也可以在物联网和 Cloud 系统无需修改。
Snaps 还允许用户拥有同一个应用程序的多个版本。 快照的自我更新特性确保用户不必担心手动更新。 但是,由于 snap 包包含所有必要的依赖项,它们比 vanilla 更庞大 .deb 或者 .rpm 包。 此外,许多应用程序的 snap 版本运行速度比 AppImages 或 Flatpaks 慢。
以下是一些快照命令,如果您刚开始使用它们,它们可能会很有用。 每个命令的功能都以注释的形式列出。
# install VLC Media Player
snap install vlc
# list installed snaps
snap list
# update VLC Media Player
snap refresh vlc
# revert VLC Media Player to the prior version
snap revert vlc
# remove VLC Media Player
snap remove vlc
2.AppImage
AppImage 是一种无需在机器上安装即可试用新应用程序的好方法。 AppImage 背后的概念相当简单:每个应用程序一个文件。 这样,开发人员可以确保其应用程序的可移植性,并且用户无需安装即可试用新软件包。 AppImages 的一个主要优点是它们不需要 sudo Linux 中的权限。
要试用 AppImage,您需要做的就是下载包,使其可执行并运行它。 它类似于如何 。可执行程序 文件在 Windows 中工作。
AppImageHub 是 AppImage 包的中央存储库,包含许多流行的应用程序。 如果提供,您还可以从供应商网站下载 AppImages。 但请远离从不受信任的来源下载的 AppImage。
AppImage 通常比 snap 或 flatpak 更快,并且需要更少的存储空间。 它们也很容易删除,因为您可以随时删除 AppImage 文件而不会中断其他系统进程。
以下是从命令行在 Linux 中运行 AppImage 文件所需的命令:
# grant execute permission to the file
chmod a+x *.AppImage
# execute the AppImage
./*.AppImage
3. 扁平包装
Flatpak 是另一个与发行版无关的打包系统,它提供具有所需依赖项的应用程序。 用户可以从流行的 Linux 系统的分发商店或通过 CLI 找到并安装 flatpak。
Flatpak 是一个去中心化系统,这意味着您可以从多个 repos 或远程获取包(以 Flatpak 术语)。 平面图 是最受欢迎的遥控器,拥有数以千计的应用程序。
Flatpak 应用程序默认在沙箱中运行,这是一个与主机系统运行时分开的应用程序环境。 这个沙箱包括运行软件所需的一切。 Flatpak 包的隔离特性使其具有固有的安全性,并且只有在用户提供明确许可的情况下才能进行系统更改。
但是,Flatpak 包通常比 Snaps 或 AppImages 占用更多空间。 它们也比 AppImages 慢,但比 Snap 包快。 Flatpak 默认安装在现代 Linux 发行版上。 如果不是这种情况,您可以使用以下命令安装它:
在 Ubuntu/Debian 上:
sudo apt install flatpak
在 Arch Linux 上:
sudo pacman -S flatpak
在 Fedora、RHEL 和 CentOS:
sudo dnf install flatpak
您可以使用以下代码段将 Flathub 存储库添加到您的系统:
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
使用 扁平包装安装 命令来安装软件包。 以下命令从 Flathub 安装 VLC flatpak:
flatpak install flathub org.videolan.VLC
Snap 与 AppImage 与 Flatpak:走哪条路?
由于所有三种包格式都是独立于操作系统的,因此您可以选择使用其中的任何一种。 但是,在某些情况下,每个人的表现都优于其他人。 为了 example,如果应用程序速度和程序大小对您来说最重要,那么 AppImage 将是理想的解决方案。
但是如果你想在不同的平台上运行你的应用程序,Snaps 应该是要走的路。 另一方面,Flatpaks 为开发人员提供了更多的控制权。 因此,如果您是开发人员,您可能会选择 Flatpak 而不是 Snaps。 在 Snap、AppImage 和 Flatpak 之间进行选择时,应用程序的可用性也是一个重要因素。
适用于 Linux 的最佳独立于发行版的打包系统
独立于发行版的软件包是确保软件可移植性的好方法。 Snap、AppImage 和 Flatpak 这三个产品都为最终用户提供了独特的东西。 即便如此,这取决于您要使用哪一个。 更好的是,尝试所有三个领域中最好的 Linux 应用程序,看看哪些适合自己。