为什么我要安装一个snap,而不是通过apt来安装呢?

这不是以下问题的副本: 因为:
我的问题明确指出,我对终端用户体验感兴趣,而不是开发的便利性或效率,这正是其他问题主要涉及的内容。正如已经指出的那样,开发/部署会影响到终端用户的体验,但这并不是全部,所引用的两个问题都没有涉及直接影响终端用户使用应用程序能力的问题(例如在其他分区上访问数据困难、运行缓慢等)。
也许“引人注目”不是我应该使用的正确词汇;我的意图是询问现实世界中的经验后果,即发生或未发生的事情,而不是理论/架构性陈述,尽管它们可能是准确的,但似乎没有任何真实世界的例子来支持这种说法。我应该更直接地说明我的意图是获得回答,考虑到“优势”与终端用户所经历的现实世界的不利因素之间的平衡。这个“重复”的问题在很大程度上是理论性的,并且根本没有讨论终端用户的体验。
这个“重复”的问题没有提到任何类似于我在这里使用的例子,即对于Snaps存在终端用户的不利因素(在这种情况下,无法访问其他分区上的数据和Snap应用程序性能),这在我找到的任何可用文档中都没有讨论到。
虽然我理解Snap在使应用程序更广泛可用方面具有巨大优势,但如果该应用程序通过apt软件包在我的发行版/版本中可用,是否有任何令人信服的理由选择Snap而不是apt呢?
我很好奇,因为我一直在阅读关于Snaps的一些资料,所有关于这种方法的兴奋似乎都是关于对应用程序开发人员有利的事情,但我几乎没有看到关于如何使终端用户的生活更轻松的信息(除了显而易见的;他们可能能够安装在其发行版/版本上否则不可用的应用程序)。
我安装了snapd并安装了几个Snap应用程序,但感到非常沮丧和失望。Snap应用程序运行缓慢,并且很难(如果不是不可能)从Snap内部访问其他分区上的文件。
虽然我看到很多信息说Snaps更“快速”,“简单”,“安全”等等,但我找不到任何解释为什么或如何实现这一点的内容。
作为一个对Linux非常新手的人,我想知道是否可能我只是错过了一些明显的东西?明确地说,我理解为什么这项技术总体上可能有用,但我找不到任何解释,即使在所讨论的应用程序可以通过更传统的方法安装,并且满足所有依赖关系的情况下,为什么它是一个更好的选择。

大多数在Ubuntu和其他发行版中的应用程序都不是最新版本。如果你对此感到满意,那么就没有理由使用snap了,显然你不必这样做。 - mikewhatever
@mikewhatever - 我知道我不必使用snap - 这就是为什么我在问这个问题。应用程序不“最新”并不能解答我的问题,因为“最新”是非常模糊的 - 一个应用程序是否处于最新版本对最终用户是否有劣势高度依赖于具体情况。所以我对此的问题是,不更新的潜在劣势如何与通过snap安装应用程序所带来的实际劣势相比较。 - LSharkey
1我投票支持重新开放,但是你的第一点直接影响到用户,因为它解除了用户和开发者(可能)复杂软件部署的任务,从而提供了更好的整体体验。 - David Foerster
@muru - 不,这不是重复的问题。你提到的问题没有涉及到使用Snaps时对终端用户体验的负面影响。 - LSharkey
除了我提到的两个问题——更高的磁盘使用率和可能缺乏安全更新之外,你还说的有哪些缺点? - muru
@DavidFoerster - 是的,我同意 - 开发/部署直接影响最终用户体验,但我的观点是这不仅仅涉及开发/部署,而且我尚未找到任何基于事实的讨论来解决影响最终用户体验的snap方面。我希望能够获得关于优势和劣势的足够信息,以便在任何给定的情况下做出明智的决策。 - LSharkey
@muru - 我在那里提到了两个不利之处:从快照中访问不同分区的数据困难和性能缓慢。关于你提到的这两个问题,可能会直接影响最终用户的体验,也可能不会 - 这更像是一种管理问题。我对最终用户体验很感兴趣。 - LSharkey
@LSharkey 我尝试的几张快照没有性能问题,而且根据不同的人看法,数据访问问题是一种特性而非错误。如果您有任何关于性能的具体数据,请提交一个错误报告。 - muru
@muru - 我没有任何关于性能的具体数据,这只是我注意到的。 这也是我提出这个问题的原因之一。 我非常沮丧,没有详尽而易于找到的关于任何性能测试、影响应用程序使用/功能的“特性”/错误的文档。 - LSharkey
@muru 关于你说数据访问问题是一种特性而不是错误的说法,这与我们的讨论无关。我关心的是对最终用户的影响;无论这种影响是设计上的还是由于架构限制,对最终用户来说并不重要。如果他们不能做他们习惯做的事情,那对他们来说就是一个问题。 - LSharkey
@ muru - 不过我必须说,和你讨论之后,整个问题对我来说变得更加清晰了,所以谢谢你。我开始明白行业在采用快照时的思考过程,尽管没有我期望的那种文档,但我认为对于这个问题的答案基本上是“买家自负” - 也就是说,测试每个应用程序,寻找新“功能”的解决方法等等。所以如果你想总结一下你的评论并将其发布为答案,我会将其标记为解决方案(我想这就是它的工作方式,对吗?) - LSharkey
1作为一个终端用户,我在最近从16.04升级到18.04的过程中遇到了第一个问题。当处理snaps时,整个过程非常缓慢。首先它检测不到已安装的snaps,然后开始安装6个snaps,并且在我的带有SSD的笔记本上读取状态信息花费了很长时间。真的,这是怎么回事? - sabujp
3个回答

我可以分享一些关于LibreOffice 6.1.3.2的两个版本的实验结果:一个是通过Ubuntu 18.04提供的snap包交付的,另一个是从官方ppa安装的。请记住,下面给出的数值仅为近似值。
空白Calc电子表格的启动时间
- ppa: 1.5秒 - snap: 13秒
将13张幻灯片(主要是png图片)转换为pdf的时间(使用impress)
- ppa: 9秒 - snap: 约70秒
磁盘使用量[MB](预期/实际)
- ppa: 369 / 483 - snap: 507 / 1269
我意识到这些数值取决于我所使用的硬件和系统的具体配置。然而,考虑到我使用的是同一台笔记本电脑、操作系统和LibreOffice版本,我相信相对比较仍然具有参考价值。
总的来说,在我的笔记本电脑上,Snap镜像占用的磁盘空间是对应的ppa的两倍多,而且速度几乎慢了10倍。与普遍观点相反,Snap应用程序的后续启动在我的系统上并不更快。
就终端用户的利益而言,我个人认为Snap只与系统安全有关(无需使用sudo进行安装,运行时权限受限)。因此,如果您在一个风险较低的个人系统上运行,我建议坚持使用ppa。在这种情况下,目前的Snap性能明显较差,增强的安全性并不值得付出这样的代价。

1值得一提的是,首次运行时,快照需要进行设置(例如字体、主题等),因此速度较慢。另外,最近还有更多启动速度的改进:https://snapcraft.io/blog/snap-startup-time-improvements - Pierz

Canonical说...

Snaps适用于任何发行版或设备。安装Snaps更快、创建更容易、运行更安全,并且它们会自动更新和事务处理,因此您的应用程序始终保持新鲜,永远不会出错。

我也更喜欢使用apt来管理我的Ubuntu软件包,但如果您使用其他发行版,可能希望安装一些在发行版软件包管理器中不可用但在Snap中可用的内容。Canonical希望“替代”apt,因为他们认为Snap更稳定,对开发人员来说更容易创建软件包。

Snaps更安全!您安装的Snaps将安装在硬盘的不同卷中。您可以像在Android 6.0及更高版本上那样管理应用程序的权限。您可以阻止应用程序使用摄像头或麦克风,并访问您的主目录中的文件。

确实,Snaps与主题兼容性存在一些问题,但它们更安全,并且可以让您在大多数发行版中访问软件包。


2谢谢,但是你的回答并没有解答我的问题。我非常了解Canonical的“官方”解释。我在问题中特别询问的是如何管理使用snaps时的非广告化负面影响(与最终用户体验相关)。 - LSharkey

我使用Snaps,因为它们通常比apt的等效物更及时更新,后者可能已经过时了一年甚至更久。对于那些功能不经常变化的程序来说,这可能不是个问题,但对于那些有快速发布计划并频繁添加/删除功能的程序来说,就很重要了。
以下是我个人遇到的一些例子。
几年前,我想在命令行中使用Arduino做一些事情。apt上的当前版本是2013年的1.0.5,非常过时,而且缺少我需要的功能。snap上的当前版本是最新的1.8.12。
apt上的当前版本是2.79,而snap上的当前版本是2.82。Blender用户会知道,在2.80版本中发生了很多变化。 pypy的当前版本是2018年左右的5.10.0,而snap上的版本是7.3.0。尤其是pypy3经历了许多开发,并且每个发布版本都有很多改进。
apt上的当前版本是2.8.22,而snap上的当前版本是2.10.18。界面发生了很大变化,启动时间也快了很多。
正如你所看到的,对于像我这样的终端用户来说,保持最新状态确实非常重要。

2如果最新版本很重要,为什么不从源代码安装到/usr/local呢? - kjetil b halvorsen
2@kjetilbhalvorsen snap具有一个软件包更新机制,可以保持其最新状态。有时候我只是不想去搞编译。 - qwr
2这个论点并不一定是正确的。以pdftk为例,迄今为止,终端会提供两个选项:snap(版本2.02)和apt(3.0.9)。 - kdarras
@kdarras 当然不是。我只是在解释我的特定用例。 - qwr