三款新星Linux解决方案:Snappy、Flatpak和AppImage
不久前,二进制软件包被认为是救星,不必为Linux系统编译软件包。
2018年,借助与发行版无关的软件包解决方案,我们会阔步前进。本文将介绍这个领域的三颗新星:Snappy、Flatpak和AppImage。
AppImage是一种很管用的软件磁盘映像
我是AppImage的忠实粉丝,因为只要使希望运行的某个程序成为可执行文件,然后双击它即可。AppImages就这么简单。据官网介绍,其想法是你可以直接从相应软件的开发者那里获得软件。使用AppImage格式,安装应用程序可能让人觉得类似如同使用Windows一样。
运行AppImage的优点是不需要sudo、root甚至不需要为系统依赖项所操心。你基本上只需挂载磁盘映像,类似在OS X中挂载磁盘映像。
也许运行AppImages的最大优点是,你运行的应用程序只需删除一个文件即可将其删除。这个单一的文件/磁盘映像方法既好又坏,取决于你怎么看待它。而且,AppImages易于分发、运行简单。
AppImages的缺点是,即使你直接从开发者的网站获得软件,仍然不知道应用程序是否已被篡改。用过Transmission这款应用程序的OS X用户对信任软件的这个问题深有体会。这款应用程序让勒索软件可以感染在Mac上运行该应用程序的那些人。
尽管很喜欢AppImages,但我对AppImages绝对值得信赖的黑体印刷声明持有异议。实际上,它们就是磁盘映像,我们需要信任每一个AppImage的分销商。幸好,如果有人选择在沙箱中运行AppImage,万一下载的AppImage在源网站上被人利用,这可以防止形势失控。
Flatpak提供隔离的运行时环境
Flatpak安装的更新和应用程序由每个运行时环境来处理。其想法是,这提供了比运行典型的Linux软件包更新更简化的软件包处理机制。Flatpak的亮点在于,它是针对桌面Linux发行版设计的。因此,使用Flatpaks分发的应用程序是针对桌面Linux用户设计的。这也是AppImages的一个特点,但是Flatpaks的不同之处在于,它允许单个的应用程序更新。
Flatpaks与Ubuntu PPA相似的地方在于,它们使用单个的代码仓库用于应用程序安装和更新。我先得承认,我其实不喜欢Flatpaks的这个特性,因为努力找到单个的代码仓库很费时。然而优点在于,由于与发行版无关,它确实为安装/更新提供了一个更好的系统。
考虑的另一个方面是,安装Flatpaks框架需要安装所需的组件,才能使Flatpak成为可安装的可用软件。如果是Ubuntu之类的发行版,你得为Flatpak框架添加Ubuntu PPA。简而言之,先要安装PPA仓库,才能安装框架,之后才可安装Flatpak仓库。虽然这么做不难,但有点多余。
运行Flatpak安装的应用程序的好处是,你可以在自己选择的任何发行版上运行最新的软件。此外,为了减少寻找单个Flatpak仓库带来的麻烦,Flathub的应用程序部分简化了软件查找。
Flathub提供了在一个地方查找软件的功能,即使过去Flatpaks不在一个单独的地方。这实际上是个好主意,这样一来,使用Flatpaks就极具吸引力。可能最重要的是,Flathub的软件类别含有可供选择的大量软件。
与AppImages一样,Flatpaks是针对Linux桌面设计的。我们在介绍下文时,这是一个重要的考虑因素。
Snap Packages是压缩文件系统
Snap软件包是Canonical提出的一个打包概念,针对Linux和物联网而设计。你进入到Snapcraft网站后,产生的第一印象是,Snaps把开发人员放在最终用户的前面。我倒不是说这是缺点,但是Snaps网站完全证实了我的说法。首页上的两个按钮分别是“构建你的第一个snap”和“开始上手Github”。
上面提到的两个按钮链接都假设你是开发人员,这与Flatpak的首页大不相同。Flatpak首页致力于将Flatpak软件安装到最终用户的PC上。如果你查看顶部的导航栏并点击商店,Snaps只提供最终用户解决方案。一旦你点击商店链接,会看到可以安装到目标PC和服务器上的可用Snaps。
Snaps还与AppImage相似的地方在于,你是挂载软件映像而不是安装软件。Snaps的另一个好处是,可以恢复到软件的早期版本。此外,由于Snaps共享一个代码仓库,更新起来很容易。
一些人认为Snaps最大的缺点是,它提供了Canonical控制的集中式打包格式。当然,Snaps适用于多个发行版,但是可用Snaps的控制仍集中在一个地方。另外值得一提的是,知名的开源和闭源软件在Snap的仓库中受欢迎。
Snaps最后一个重要的特点是,它们不仅限于前面提到的Linux桌面,还旨在为物联网提供打包解决方案。这是Snaps与Flatpak和AppImage的最大区别。Snaps主要侧重于物联网,Linux是额外的好处。
哪种打包类型最适合Linux?
在比较了上述每种打包类型的差异和优点后,我们想知道哪一种最好。就简单性而言,我认为AppImage在这方面胜出。但是如果你希望能够使用其中一种打包格式来更新软件,那么Flatpak或Snaps更明智。