为什么Ubuntu会抛弃.deb软件包并转而使用.snap软件包?
至少到目前为止,他们仍将.deb软件包保留为正常发行版本。 .deb已经是目前最受欢迎的包装格式。
这使您对Snap包装格式有所了解。但是现有的deb软件包会发生什么?转向Snap有明显的优势吗?痛苦值得吗?

评论

链接已断开

#1 楼

Snap试图解决Linux作为桌面操作系统的基本问题之一:软件可用性和软件分发。但是,Snap并不是要完全替换deb。 Snap和Debs相互配合。
我是Linux爱好者,也是Linux应用程序的项目经理。当我整体上喜欢Linux系统时,我鄙视软件包分发的当前状态。 Snap旨在解决这个基本问题。
在Linux中,软件包是专门为单个发行版的单个版本而构建的。通过大量的调整,可以使一个.deb软件包可以在所有基于Debian的系统上运行,但这很复杂,并且限制了开发人员。
如果我为Ubuntu 20.04创建一个deb软件包,则只​​能在该版本上使用版。我还必须为16.04、18.04、19.10等制作不同的程序包。我已经必须为Ubuntu制作四个软件包。我还需要为每个Debian版本,每个Fedora版本和每个openSUSE版本制作一个。
这意味着如果我要发布应用程序的新版本,则必须创建20多个软件包以覆盖大多数Linux。发行版,但这仍然无法涵盖所有​​发行版。第二种可能性是等待分发维护者将您的软件包添加到分发中,但这通常花费大量的时间。此外,然后由发行版维护人员决定用户获得的版本,而不是由软件开发人员来确定。
使用Snap,单个软件包可在支持Snap的每个发行版的每个版本上运行。有关支持它的许多发行版的列表,请参见安装快照。
此外,开发人员使用Snap发行并维护软件包,而不是发行维护者。因此,作为开发人员,我可以向所有用户发布新版本,而不必等待其他任何人。
本质上,我讨厌Linux软件包分发的所有内容都由Snap解决。尽管必须注意,这些问题也可以通过AppImages和Flatpaks解决。
TL; DR
Linux软件包的分发对于开发人员和用户而言都是糟糕的。 Snaps,AppImages和Flatpaks旨在解决基于Linux的系统中的这一基本问题。

这个问题的确是关于为何采取这一举措,但是否有人有兴趣进一步了解Snaps是什么以及它们如何工作。我创建了此视频以深入解释该结构。

评论


天哪,您听起来很难,除非没有人支持这么多版本的Fedora,Debian或Ubuntu。到16.04退出时,15.04就是EOL。到Fedora 23推出时,F21还剩下不到一个月的生命,足以让人们跳过发行版。没关系。编写完基本的RPM规范文件或基本的Debian软件包后,其他发行版便进行了调整,然后,对于每个新发行版,它们都是Jenkins的工作。

–约翰·富兰克林
16年6月18日在18:56



Ubuntu软件包适用于多种版本:14.04、15.10、16.04,有些仍继续支持旧的LTS,如仍支持的12.04。 || Fedora没有LTS,因此可以支持的版本更少,但是仍然至少支持2个版本,可能支持3个版本。 ||听起来对您来说更好? A.为一个发行版制作同一应用程序每个版本的多个程序包,并为多个发行版执行该程序包。或者B.为您的应用程序的每个版本制作一个快照,并且可以在任何发行版和所说发行版的任何版本上使用。是的,在这种情况下,我投赞成票。

– Michael Tunnell
16年7月1日在15:19

@ user447607您误解了快照和快照。不会有很多冗余,会有运行时,并且会有使快照依赖于其他快照以节省空间的选项。实际上,这已经是可能的。 Snappy是另一个处理快照的程序包管理系统,而apt仍然与DEB有关。快照不会替代DEB,而是会增加DEB,因此您将获得一种涵盖这两种方法的混合方法。实际上,可以通过现有的DEB自动生成快照。

– Michael Tunnell
17年2月4日在21:58

@konung Docker纯粹是容器化,正如Snaps所具有的那样,并且与系统核心组件集成。例如,Docker要求容器中包含所有内容才能使用它。但是,快照仅需要包含必需品,然后它可能看起来不在快照之外以利用其他功能。 Snaps还具有更好的基础架构,因为Docker没有真正的更新机制,但是Snaps使用与APT for Debian类似的软件包管理系统。我建议您查看我在原始帖子中链接的视频。我计划尽快制作一个更新的版本。

– Michael Tunnell
18年1月12日在15:15

@konung Snap不是容器。例如,很多人将它们与Docker相比较,但是Docker是真正的容器,而Snaps却不是。捕捉类似于容器,但它们不是完整的容器,因为它们允许在限制范围之外进行异常。例如,settings / configs / data内容存储在/ home文件夹中的Snap内部。这样,您就可以拥有所有想要共享相同数据/配置的快照版本。

– Michael Tunnell
18年1月17日在17:12

#2 楼

很简单。 Snappy软件包包含所有必需的文件,其中.deb软件包与其他软件包具有依赖性。

不利之处在于Snappy较大,因为它包含所有文件。但是最大的好处是您不会遇到其他软件包的麻烦,并且如果删除此软件包,其他任何软件包都不会受到缺少依赖项的影响。

评论


这也意味着安全噩梦。哦,请证明我错了……因为正确将是如此可怕。

–于尔根·艾哈德(JürgenA. Erhard)
17年6月26日在19:41

因此,从本质上讲,他们采用Windows路径-具有讽刺意味的是,过去Linux-ers嘲笑了这一路径。

– Pithikos
17年12月30日在22:31

嘿,@JürgenA.Erhard,据我所知,每个程序包都有其自己的库,例如密码学,因此,除了验证一个程序(即自动编译)之外,基本上必须单独处理每个程序包,而这是您的意思。 “安全噩梦”?

–伊利亚
18年2月14日在5:20

更正:“包含所有必需的文件”不正确,因为有一些核心快照可用作运行时。但是,这是在原始答案之后添加的,因此在当时是正确的,但此后发生了很多变化。

– Michael Tunnell
18 Mar 8 '18 at 17:46

那么快照就像MAC的.pkg一样,几乎全部包含在所有必需的东西中吗?

–firstpostcommenter
20 Jul 26'11:07



#3 楼

Snappy Personal,他们用于包管理/更新的新方法,旨在更快,更可靠,具有事务性并具有更强的安全性。

Snappy至少进行了一次桌面旋转-计划是将Ubuntu的Desktop-Next旋转从.deb切换到Snappy Personal。

.deb仍会存在,并且普通用户仍可以在将.deb转换为snappy之前定期使用它。

Snappy将用于统一软件包的概念ioT之间的管理,现在使用snappy作为其核心Os。此外,snappy提供了一种更好的更新方式,在更新/升级时摆脱了问题,因为它使用了整个映像的概念,这意味着更新将只是一件,因此没有失败的方法

阅读那些有关更多信息的文章:

http://www.webupd8.org/2015/04/ubuntu-desktop-to-eventually-switch-to.html

http: //www.itworld.com/article/2914850/linux/is-ubuntu-moving-away-from-deb-packages-here-is-the-complete-story.html

也有ubuntu播出的质量检查视频,回答了很多问题
https://youtu.be/lHO8j8uo5Z4

评论


他们为什么不能制作具有向后兼容性的.deb版本2软件包?为什么要在Linux社区中分裂?目前,计划是缓慢迁移到Snappy,除非最终失败。

– Vishnudev K
2015年5月5日7:05



他们希望在ioT中统一软件包管理的概念,该ioT现在使用snappy作为其核心Os。此外,因为它使用了整个映像的概念,因此快照提供了一种更好的更新方式,并且消除了更新/升级时的问题,这意味着更新仅是一件,因此绝不会失败

– Maythux
2015年5月5日7:07

对于Linux中各种各样的打包方法(已经引起第三方程序的问题),这已经很糟糕了,另一种方法只会使事情变得更糟:-/

–野生
2015年7月9日在9:30



@Maythux。什么是ioT?

– TRiG
16年5月6日在9:31

@Maythux xkcd.com/927

–用户
17年2月1日在17:40

#4 楼

如果您正在考虑创建一些供他人使用的东西(换句话说,一种产品),请考虑立即使用敏捷的Ubuntu Core。

该软件以快照的形式提供,鉴于其特点,我们可以放心安装和升级将按照原始创建者的意图在每个系统上运行。其他特性是安全性,例如隔离的执行和与系统进行对话并配置已安装的snap的简洁接口。

要实现这种目标,snap与debian软件包有很大不同:


快照位于系统确定的隔离位置中,而debian软件包可以将文件散布到各处。
没有用于快照的维护脚本。

回到原始的使用或不使用的问题,如果您打算用Ubuntu Core替换台式机,我建议您坚持使用常规的Ubuntu台式机。我个人喜欢称其为Ubuntu Core,什么也没有,因为仅此而已,但它提供了一个很好的构建基块来提供某些东西,这就是为什么它在当今的IoT中很流行的原因。

评论


换句话说,它就像窗户一样吗?

– Vishnudev K
15年11月12日在13:29

这是一个广泛的问题。 Windows特别做什么?

–sergiusens
2015年11月12日下午13:33

我在Windows中安装VLC,它安装了占用空间所需的所有软件包。在linux中,我们只得到我们没有的软件包。就更新和硬盘使用而言,这非常方便。

– Vishnudev K
2015年11月12日13:39



类似,是的。这与在手机上安装apk没什么不同。应用程序可以根据自己的依赖性进行演化。尽管有多种方法可以拆分,例如通过使用框架快照,但这需要严格的安全审查。与Windows的区别在于,这里没有安装程序可能会在他们想要的任何地方着陆。

–sergiusens
2015年11月12日下午13:42