为什么存在快照包 – 是否真的需要?
假设
老实说,我对snap-packages知之甚少 – 但这与这个问题无关 – 见下文。 我认为该系统与现有系统有很大不同。
这种改变是否有意义?
是否有实际需要,足够强大? 那是 – 是否有一个新的用例,这对于开发新格式以及相关的基础架构非常重要?
改变当前的方法来覆盖新的用例是不可行的?
或者我错过了这一点?
有可能我所看到的主要是营销 – 新的名称和最小技术变化的演示,以获得任何机构认为它是“新的和更好的”的机会,它可能实际上被使用。 而且,新包可能是基于现有格式如此紧密,以至于主要是向用户呈现的改变。 当然,这可能是一个很好的解决方案。 在这种情况下,这个问题没有多大意义。
然后,我希望这仍然有用,可以回答方面的问题。 如果问题对新用户没有帮助或混淆,请告诉我,我很高兴删除它。
那么,他们为什么存在?
背景
我的第一反应是“这毫无意义!”
这类似于这样一种情况:在物理网站上,有人问,不开心,为什么没有人在答案中讨论他的精彩新想法。 它看起来非常像疯子的想法; 到目前为止,实际的物理知识很难找到一个甚至开始的点。 我写了一个没有用一个单词触及他的想法的答案,但解释了为什么人们不会讨论假设疯狂的想法 – 而不是第一种情况。 我想,答案实际上就是重点。
如果我的假设是正确的,这种情况就是类似的。
但是,也许不是 – 让我们看看。
是的,真的有需要。
自从一个软件第一次依赖另一个软件以来,就一直需要这样的东西。
让我们说清楚:
管理依赖关系很难 。
这就是为什么它被称为依赖地狱的原因。 像RPM和Debian这样的打包系统是为了避免依赖地狱而创建的。 但是,有人必须支付费用:
- 在Windows上,程序捆绑其依赖项,用户必须负责升级(以及由于缺少安全性而导致的任何安全问题)。 如果我开发人员想要我的应用程序的X版本,简单:我提供我的应用程序。 现在我该如何处理更新?
- 在大多数Linux发行版(遵循Debian或Red Hat)中,程序可以依赖于来自存储库的软件,来自存储库的程序必须依赖于来自存储库的软件。 如果我想要我的应用程序的版本X,并且发行版提供X,简单:我依赖它。 如果发行版没有? 然后: ???
- 在发行版中添加多个版本会增加维护者的负担
- 失去使用依赖项选择版本的能力会增加开发人员的负担
- 失去使用应用程序选择版本的能力会使用户感到沮丧
两种方法都存在相当大的自由度损失。
这就是Snaps的用武之地:他们让dev包含版本X,让包装系统管理更新。 谁支付了费用? 用户:
- 需要更多空间。
- 由于粗略的开发人员在修补依赖关系时没有重建他们的快照,因此将他们置于危险之中。
作为交换,我可以获得什么好处?
- 除了通过更新的安全性(坦率地说,没有足够的人关心),我用户不必担心使用快照的依赖性。 这个词大多失去意义。
- 除安全更新外,软件开发人员无需担心让用户安装正确的依赖项。
可能有用的快照的一个特定function是为提供多个通道的开发人员选择通道的能力,例如release , candidate , master等。
例如,单击nextcloud
的Channel按钮将在下面的屏幕截图中显示该对话框。
其他强大的卖点是隔离,不变性和沙盒,它们由安全策略上下文控制 ,允许定义每个应用程序的权限,也称为“插件”,例如:
- 读/写位置
- 访问可移动存储
- 快照列入白名单/列入黑名单的国家/地区
- 网络访问
- 相机,打印机,操纵杆,GPS位置
- 系统设置
- …快照接口的完整列表
该方法在某种程度上模仿了MacOS应用程序捆绑和Android的应用程序沙箱与权限和内容提供者/接收者。