Linux安装包不通用?解决方案来了!

Linux | 科技爱好者 2021-02-22 13:47:13
阅读量 611 点赞 0 收藏 0

用过Linux的同学可能知道,Linux发行版,比如 Ubuntu 使用终端输入一行命令“apt install 软件名”就能快捷实现软件的安装。

但是在非 Debian 家族的 Linux 发行版中,比如 manjaro,就需要用 pacman 来安装软件。
为了解决不同发行版安装软件包的问题。就出现了通用的软件打包格式。
这一解决方案,对 Linux 上的软件开发人员来说,是非常便利的。
想要在多个 Linux 发行版上发布软件,就不需要针对每个发行版对软件进行平台化的打包。通过统一的打包方式,便可快速实现软件的分发。
本文小编就来介绍一下从普通用户角度,看看三种打包格式 Snap、Flatpak 和 AppImage 的主要区别。

用户的权限控件

Snap 为用户控制的权限提供图形和命令行界面。在 Ubuntu 系统中,可以使用自带的「Ubuntu 商店」来管理 Snap 应用的权限。


若要查看使用命令行接口的快照应用的权限,请运行以下命令:

$ snap connections chromium


将「chromium」替换为相应的 snap 应用的名称。


若要查看所有已安装的快照应用的列表,请运行以下命令:

$ snap list


要授予相机权限给 Chromium 浏览器,可使用以下命令:

$ snap connect chromium:camera


要取消摄像机权限,运行下面的命令:

$ snap disconnect chromium:camera


权限管理的适当命令可以在「Slot」列中找到(上一张屏幕截图所示)。

相比 Snap 应用,Flatpak 还提供用于授予和撤销权限的接口。
可以使用 GNOME 软件应用(需要 GNOME 3.32.x)通过图像的方式操作。


若要查看 Flatpak 应用的权限,可运行以下命令:

$ flatpak info --show-permissions Chromium

将「Chromium」替换为 Flatpak 应用的名称。


若要查看系统上安装的所有Flatpak应用的列表,请运行以下命令:

$ flatpak list


若要更改 Flatpak 应用的权限,必须更改上面屏幕截图中显示的变量值。例如,下面的命令将使整个文件系统可用于皮瓣应用:

$ sudo flatpak override Chromium --filesystem=host


AppImage 目前不支持权限控件,但未来会支持的。


沙盒环境

Snap、Flatpak 和 AppImage 支持开箱即用沙盒应用环境。
沙盒是一个环境,或者也可以说是一种容器,它与主机系统完全隔离开来。
与主机系统的任何交互都是使用有限的 API 和权限控件完成的。
其中一些权限明确要求用户选择加入,或者我们用户可以完全禁用这些权限。
沙盒应用比对主机系统具有完全访问权限的其他应用都相对安全。

沙盒环境我想大家可能并不陌生,Windows 10 系统也内置了一个 Sandbox 环境,对于一些不放心的软件,可以先在沙盒环境中测试,这样就不会破坏主系统。


应用程序可移植性

AppImage 应用是单个可执行文件(类似于 Windows 的.exe文件),可以轻松地在系统之间共享。

通过包括应用本身以及应用所依赖的依赖库 Snap 和 Flatpak 应用具有可移植性。

但是,此过程不像 AppImage 那样简单,需要使用多个命令才能实现相同的结果。


自动更新

Snap 和 Flatpak 应用程序从集中式应用程序存储库中安装,应用程序无需用户干预即可自动更新。
AppImage 缺乏强大的自动更新机制,用户必须手动下载新的 AppImage 二进制文件,并替换现有的二进制文件以安装更新。
不过目前AppImage 开发人员提供了一个工具,通过提供增量更新的方式来更新现有的二进制文件。

但是,它仍然需要下载更新工具,并手动将其与现有的 AppImage 二进制文件一起使用。


应用程序大小

AppImage 的应用由于使用压缩的关系,软件大小占用空间最低,Snap 和 Flatpak 应用大小因应用而异。


总结

与 Windows 相比,Linux 系统在软件安装上存在有一定的门槛,增加了学习成本,通用安装格式的出现,便可以一定程度上解决不同发行版 Linux 安装软件的问题。