译者的话:中文读者消费二手信息是一个问题。我们总是认为英文媒体相对客观,实际上捕风捉影也是有的(比如之前关于 openSUSE Tumbleweed gcc 6 的传闻,其实是发在开发者列表的进度播报,openSUSE 的 gcc 6 迁移事实上并不存在任何问题)。从传播学的角度,第一手消息往往是未经各方证实的,倾向性极强的。而理性的讨论往往需要一定时间发酵。这就需要我们对话题有一定的跟进。本文的作者是 Fedora 的 QA 带头人,从另一个角度介绍了 Canonical Snappy。
注意:这篇文章完全是个人视角。这里的观点是我本人的,并非代表 Fedora 或者红帽。然而,这些事实全都是 100% 真实的。
为了让不认识我的来访记者 100% 清楚:我为红帽工作,工作内容是 Fedora。我本人不是不偏不倚的,也不宣称这样,但我宣称我下面说的具体内容肯定是真的。
本周你可能看到了一些消息,是关于一个应用程序分发机制,叫做 Snappy 的,说它将统一全部发行版,并干掉 apt 和 rpm!
这个,放在外交上看,是一堆热气腾腾的废话。如果说这堆废话是 Canonical 宣传部门放出来的,你可能就不觉得稀奇了。
所有此类文章的来源都是这篇媒体通稿,以一种相当不加批判的方式覆盖了若干网站。甚至就连 Ars Technica——通常在报道真实新闻方面做得很好,而不是不加质疑地大段引用媒体通稿——也把它说的包治百病。
这篇媒体通稿和这些事故一起,给了你这样强烈的印象:这个叫做 Snappy 的东西将成为跨发行版分发应用程序的未来,并且它今天就可以使用了,很多主流发行版也都买账了。在这篇通稿中你可以找到像这样的:
“来自多个 Linux 发行版的开发者和公司今天宣告在 ‘snap’ 通用 Linux 软件包制式上的协作,让一个二进制包可以在任何 Linux 桌面、服务器、云或者设备上完美、安全地运行。”
这些故事的标题都像这样“再见 apt 和 yum?Ubuntu 的 snap 应用正在进入所有发行版”和“Snap 软件包成为了全部 GNU/Linux 发行版的通用二进制制式”(哎呀,我爱死这个标题啦)。
所以,这个你拍一我拍一的故事有问题吗?有好多!
首先,让我们清楚一点:Snappy 是一个 Canonical 公司的项目。我认为那个通稿某种程度说的像是来自于某种程度的独立项目或是合作项目,并且 snapcraft.io 网站也为这种印象进行了背书,但是每个 Snappy 的代码提交者都是 Canonical 的雇员,并且向 Snappy 贡献代码必须签署臭名昭著的 Canonical 贡献者许可协议:
“贡献总是受欢迎的!请确保您签署了 Canonical 贡献者许可协议 http://www.ubuntu.com/legal/contributors 。”
现在,Snappy 真的像通稿宣称(但从未直白陈述)的那样得到了跨发行版的认可吗?不,通稿只是表面听起来很动人而已:
“来自多个 Linux 发行版的开发者——Snaps 现在原生地运行于 Arch,Debian,Fedora,Kubuntu,Lubuntu,Ubuntu GNOME,Ubuntu Kylin,Ubuntu MATE,Ubuntu Unity 和 Xbuntu 上——一起,这些发行版代表了常见 Linux 桌面、服务器和云使用者的大多数。”
但它是一个非常大的错误表述。它引用的其它发行版事实上并没有声明支持 Snappy,并且说“是的,这就是我们未来想要分发应用程序的方式”。是 Canonical 雇员为那些发行版独立编译并发布了 Snappy 软件包。这才是通稿所有宣称的根源所在。例如,针对 Fedora 的 Snappy 软件包是位于 COPR 上面并由 Canonical 雇员维护的,COPR 是一个类似 PPA 的系统,每个人都可以编译软件包。在这篇通稿发布之前,Canonical 和 Fedora 的全部沟通就是他们来邮件询问在 Fedora 上如何打包 snappy,我们介绍了主要的打包流程和 COPR。他们肯定没有以任何方式暗示 Fedora 或者圈子里的每个其它发行版,“你们已经愉快地上车了”。
事实上是有其它目的非常相似的系统的,现在叫做 Flatpak,以前叫做 xdg-apps。公平起见,我得说 Flatpak 是重度受红帽影响的:Flatpak 的主要作者是红帽雇员 Alex Larsson。然而,它并不是一个红帽项目,像 Snappy 是 Cnonical 项目的那种程度。Flatpak 有多于 20 个的其它代码提交者,大部分都不是红帽雇员(也包括了一些其它发行版的开发者)。Flatpak 不置于任何公司的贡献者许可协议之下。说到这个程度,即使 Fedora 支持这些系统中的一个,Snappy 也是在 Flatpak 之后的。目前据我所知,除了 Ubuntu 之外,没有其它发行版致力于任何这些系统。据我搜索得知,Flatpak 和 Snappy 都开始于 2014 年 12 月。当然,Canonical 的媒体通告甚至都不告诉你 Flatpak 的存在,当然这是公关考虑,但你得想到至少有一些记者可能会进行一些独立研究啊。
更新:
写了这篇文章之后,我知道了另一个系统,AppImage,比 Flatpak 或 Snappy 都要历史悠久(但不是它们的前身)。我对它知之甚少也不能说什么,但值得一提的是——我也是听说——它没有尝试像 Snappy 和 Flatpak 那样使用沙盒,沙盒是后两者的主要特点。它纯粹是一种应用程序捆绑制式。但是,它也是一种选择呀!并且存在了一段时间了!Snappy 和 Flatpak 都根本没接近完成,不是被软件开发者和发行版买账的跨平台应用程序分发的可信赖的系统。那篇通稿宣称 Snappy 使“同一个二进制包可在任何 Linux 桌面、服务器、云或设备上完美、安全地运行”,听起来挺好吃的,真是这样吗?让我们来看看实情吧。拿 Fedora 来说,Snappy 给 Fedora 的安装指南上写的——去 Snappy 官网点击 Fedora 图标就能看到:
### SELinux 支持处于 beta 阶段,所以在 Fedora 24 上您目前必须:
sudo setenforce 0
好吧,现在看起来“安全”或“完美”不像说的那么厉害了,对吗?在相同的地方还说了,Fedora 软件包实际上编译时是禁用了 Snappy 的 confinement 的。Confinement是这类应用程序分发制式能够安全的全部保障。如果没有开启,你基本上只是得到了一大堆对系统有毫无控制的访问权的东西。冷暖自知吧。
据我所知,其它发行版的状态都差不多。
留神,Snappy 和 Flatpak 对于运行在 X11 下的应用程序都没法提供有效的隔离。Flatpak 只能为 Wayland 提供有效的隔离。Snappy 是为 Mir 设计的,虽然他们宣称它也可以/可能(不确定)运行在 Wayland。但这里的要点是,无论是 Wayland 还是 Mir 目前都没有被 Linux 用户大规模地真正地使用,所以他们说的 Snappy 现在就允许“同一个二进制包完美安全地运行于任意 Linux 桌面”不过是 Cnonical 一种自娱自乐的障眼法。
截止这篇过分乐观的通稿发出,只有两个真正可用的应用有 snap 包:LibreOffice 和 Krita。Phoronix(受众很广的英文 IT 网媒)很快就发现 LibreOffice 的 snap 非常大(超过 1GB)并且故障百出。包尺寸问题很快解决了,但这说明了现实跟 Cnonical 的宣称是有很大出入的。这个东西处在的是早期 Alpha 或者概念演示阶段。除了 Canonical 在非常有限的环境里使用了之外,它没有“完成”也没有准备好在真实世界中真正地使用。
当然 Flatpak 也没有。这正是为什么 Flatpak 的开发者一直通过技术大会的演示文档和博客文章沟通,与应用程序开发者和发布者建立对话机制,而不是发布新闻稿鼓吹 Flatpak 有多伟大,它现在已经准备好干掉 apt 了。
Snap 还有另一件有意思的事:服务端(等同于应用商店)是闭源的,并且 Canonical 拒绝告诉任何人如何运行他们自己的应用商店——看 Elementary 的 Cassidy James Blaede 的评论。若您想要分发自己的 snap,你的选择有,第一个是通过 Canonical 的商店发布,完全受 Canonical 控制,第二个是上传文件告诉用户用命令行安装,第三个是读源代码自己找出来如何修改 snap 客户端来使用不同的服务器,然后从零开始写你自己的服务端,并且告诉你的用户也去修改客户端。嗯嗯。
所以:Snappy 是,像 Flatpak 一样,一个重度开发的,为 linux 提供应用商店一样的应用程序供给机制的有意思的尝试。它没有完成,也没有接近完成。它不是独立的也不是跨发行版的,它是由 Canonical 完全控制的。据我所知,除了 Ubuntu 以外没有被任何主流发行版买账。它还不能在其它发行版上恰如其分地运行,在近期的未来也不能。
除了这些,它全都准备好在未来干掉 apt 和 dnf 了!
叹气。
现在我确定我会被批评说是刻薄、讨厌、愤世嫉俗,攻击 Canonical,没有建设性,他们做的是为每个人好,Adam 为什么你这么婊?
如果 Canonical 真的想要与其他人有建设性地开展工作,这么做的方式应该是与他们交谈。跨发行版和跨项目协作我们都有论坛。许多呢。我们有技术大会,你可以去谈谈你的项目,路演一下。Canonical 应该去跟其它发行版说,嗨,我们一起来试试做一个单一制式,为这种隔离的应用簇做一个通用分发机制,怎么样?
但是并没有。他们只是决定发出一份具有很大误导性的媒体通稿,并事实上鼓励专业媒体报道说 Snappy 全都准备好了,准备接管世界了,每个人都应该超开心的。
这可不是有建设性也不是与其它人协作。这是扣屎盆,是代表其它社区,是制造木已成舟。注意,这个木已成舟是 Canonical 控制全部的木已成舟(通过 Canonical 贡献者许可协议控制客户端分发,和通过闭源封闭、完全由 Canonical 拥有的商店服务器控制服务端)。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/54518.html