什么是Snap包装格式?

我对“Snap包装格式”了解甚少。我知道“Snap”是一种类似于.deb的替代包装格式。
我不知道的是:
- 为什么Canonical选择了它? - “Snap”相比.deb有哪些主要优势? - .deb会被放弃吗,或者已经被放弃了吗?

可能是什么是Snapcraft?的重复问题。 - Panther
3@bodhi.zazen 这些问题是相关的,但是建议的重复问题是关于开发人员创建Snappy软件包的一组工具snapcraft,与这里所询问的内容略有不同。 - Sergiy Kolodyazhnyy
2个回答

为什么Canonical选择了snaps?

引用Ubuntu网站上的话:

我们最初创建了snappy技术和应用约束系统,旨在确保Ubuntu移动用户获得运营级别的更新体验,并为移动时代的应用安全设立新的标准。

基本思想是解决.deb软件包中存在的问题,并提供一种更新软件包的新方法(即所谓的事务性更新),与Android应用的更新方法非常相似。正如Mark Shuttleworth所解释的:

每当我们对Ubuntu中的软件包进行修复,我们都将发布相同的修复程序到Ubuntu Core,并且系统可以以事务方式获取该修复程序。实际上,与软件包更新相比,对Ubuntu Core的更新要更小,因为我们只需要发送旧版本和新版本之间的精确差异,而不是整个软件包。

.snap软件包相比.deb软件包的主要优势是什么?

最大的优势是提高了安全性。PPA和.deb软件包通常以root权限安装,这为安全风险敞开了一扇门。

Snappy应用程序是隔离的,这意味着如果某个应用程序出现问题,它不会破坏您的系统。引用Mark Shuttleworth的话说:
“Snappy软件包被自动限制,以确保一个应用程序中的错误不会将您的数据放置在其他地方面临风险。”
.deb文件将被废弃吗?
从Ubuntu 16.04 LTS开始,用户可以同时使用这两种方法。
引用《OMG!Ubuntu!》的话说:
Canonical还表示:“在16.04及以后版本中,将继续支持数以万计的.deb格式的应用程序和软件包,并且.deb归档文件将继续提供给所有人使用和分发软件。”

4桌面版Ubuntu中,流畅的应用程序在Xenial上并不能有效地隔离。 - poolie
3@poolie 是的,我知道 xteddy。这个应用程序是用 C 语言编写的,并使用了 X 服务器的所有本地工具。从我看到的情况来看,它在与其他允许控制 X 服务器行为的应用程序(如 xdotoolwmctrl)方面并没有任何区别。问题实际上不在于 snap 包,而在于 X 服务器 - 这是对它的主要批评。一旦 Ubuntu 放弃 X,它肯定会带来更好的安全性。 - Sergiy Kolodyazhnyy
1用C语言编写有什么关系?Snappy会废弃C吗? - poolie
2在我看来,说“Snappy应用程序是隔离的”并不完全准确,因为它们实际上并没有在当前Ubuntu版本中被隔离开来,至少在99%的用户所使用的配置中是如此。是的,Snappy应用程序更不容易发生意外冲突。而且,Snappy应用程序可能成为未来版本中安全性的基石。 - poolie

总体来说,就我对Snaps的了解:
- Snaps更安全,运行在自己的“容器”中。 - 使用Snaps比使用deb包更加简单易用。 - 未来,Snaps将成为移动设备、物联网和桌面的软件包格式。 - .deb包是否会被废弃?Canonical表示,未来仍然会支持deb包。 但是有一个工具叫做snapcraft。使用这个工具可以很容易地将deb包转换为snap包。
点击此链接获取更多信息,也许对你有所帮助。 https://insights.ubuntu.com/2016/04/13/snaps-for-classic-ubuntu