为什么存在快照包 – 是否真的需要?

假设

老实说,我对snap-packages知之甚少 – 但这与这个问题无关 – 见下文。 我认为该系统与现有系统有很大不同。

这种改变是否有意义?

是否有实际需要,足够强大? 那是 – 是否有一个新的用例,这对于开发新格式以及相关的基础架构非常重要?

改变当前的方法来覆盖新的用例是不可行的?

或者我错过了这一点?

有可能我所看到的主要是营销 – 新的名称和最小技术变化的演示,以获得任何机构认为它是“新的和更好的”的机会,它可能实际上被使用。 而且,新包可能是基于现有格式如此紧密,以至于主要是向用户呈现的改变。 当然,这可能是一个很好的解决方案。 在这种情况下,这个问题没有多大意义。

然后,我希望这仍然有用,可以回答方面的问题。 如果问题对新用户没有帮助或混淆,请告诉我,我很高兴删除它。

那么,他们为什么存在?


背景

我的第一反应是“这毫无意义!”

这类似于这样一种情况:在物理网站上,有人问,不开心,为什么没有人在答案中讨论他的精彩新想法。 它看起来非常像疯子的想法; 到目前为止,实际的物理知识很难找到一个甚至开始的点。 我写了一个没有用一个单词触及他的想法的答案,但解释了为什么人们不会讨论假设疯狂的想法 – 而不是第一种情况。 我想,答案实际上就是重点。

如果我的假设是正确的,这种情况就是类似的。

但是,也许不是 – 让我们看看。

是的,真的有需要。

自从一个软件第一次依赖另一个软件以来,就一直需要这样的东西。

让我们说清楚:

管理依赖关系很难

这就是为什么它被称为依赖地狱的原因。 像RPM和Debian这样的打包系统是为了避免依赖地狱而创建的。 但是,有人必须支付费用:

  1. 在Windows上,程序捆绑其依赖项,用户必须负责升级(以及由于缺少安全性而导致的任何安全问题)。 如果我开发人员想要我的应用程序的X版本,简单:我提供我的应用程序。 现在我该如何处理更新?
  2. 在大多数Linux发行版(遵循Debian或Red Hat)中,程序可以依赖于来自存储库的软件,来自存储库的程序必须依赖于来自存储库的软件。 如果我想要我的应用程序的版本X,并且发行版提供X,简单:我依赖它。 如果发行版没有? 然后: ???
    • 在发行版中添加多个版本会增加维护者的负担
    • 失去使用依赖项选择版本的能力会增加开发人员的负担
    • 失去使用应用程序选择版本的能力会使用户感到沮丧

两种方法都存在相当大的自由度损失。

这就是Snaps的用武之地:他们让dev包含版本X,让包装系统管理更新。 谁支付了费用? 用户:

  • 需要更多空间。
  • 由于粗略的开发人员在修补依赖关系时没有重建他们的快照,因此将他们置于危险之中。

作为交换,我可以获得什么好处?

  • 除了通过更新的安全性(坦率地说,没有足够的人关心),我用户不必担心使用快照的依赖性。 这个词大多失去意义。
  • 除安全更新外,软件开发人员无需担心让用户安装正确的依赖项。

可能有用的快照的一个特定function是为提供多个通道的开发人员选择通道的能力,例如releasecandidatemaster等。

例如,单击nextcloudChannel按钮将在下面的屏幕截图中显示该对话框。

其他强大的卖点是隔离,不变性和沙盒,它们由安全策略上下文控制 ,允许定义每个应用程序的权限,也称为“插件”,例如:

  • 读/写位置
  • 访问可移动存储
  • 快照列入白名单/列入黑名单的国家/地区
  • 网络访问
  • 相机,打印机,操纵杆,GPS位置
  • 系统设置
  • …快照接口的完整列表

该方法在某种程度上模仿了MacOS应用程序捆绑和Android的应用程序沙箱与权限和内容提供者/接收者。

ubuntu snap包选择频道