为什么 Ubuntu 的 Snap 不受大家欢迎?
最近在 Github 上发现了一个非常有意思的开源项目,名称是 unsnap
这个开源项目是做什么的呢,它是卸载你 Linux 系统上的 Snap 包管理,而使用 Flatpak 来取代它。
事实上,Ubuntu 的 Snap 包越来越不受到欢迎,Linux Mint 20 甚至删除与禁止了 Snap,这又是怎么一回事呢?
1、从 Linux 软件安装说起
Linux 这个操作系统,程序员或多或少都接触或使用过,但 Snap 包管理,可能并不一定大家都非常清楚。所以我就从 Linux 的软件安装方式说起。
无论是哪个 Linux,任何发行版本,安装软件基本上有以下几种方式:
- 使用源码编译软件,这是最原始的,当然也是最有难度,对人员能力有较高的要求。
- 不同系的特定软件包,最常见的两个就是以 Debian 系为主的 DEB 包以及 REHL 系为主的 RPM 包
- 不同系的软件包管理工具,DEB 也好,RPM 也好,都存在依赖问题,安装起来不一定方便。因此在它们的基础之上,产生了 APT 包管理(Debian系),以及 YUM 包管理(RPM系)
过往,这是主流的几种方式。
但是上面几种方式都存在一个共同的特点,就是:不够通用
源码编译就不说了,无论是 DEB 还是 APT 包管理等,任何一个软件想要适配不同的 Linux 操作系统,都要在不同的系中折腾一次,分别发布 DEB 包,RPM 包等。总而言之,都不够通用。
所以,近些年来,Linux 上产生了新的包管理方式,就是:通用包。
在 Linux 的通用包中,最流行的属于 AppImage, Snap 以及 Flatpak。这些包管理方式与上述的几种方式的最大差别在于:
它们是通用的,几乎支持所有 Linux 系统
那它们是怎么做到的?
原理比较简单,它们改变过往的 Linux 软件对操作系统级别类库的依赖的做法,直接将所有依赖全整到自己的软件包内。这样就比较具有通用性了。
那很显然,这就会明显出现一个问题,这些包管理方式的体积都是非常大的。
当然,我不是来比较这些包发行版本优缺点的,这里就略过不提。
2、Ubuntu 与 Snap
回到 Snap 包管理上来吧,在我上面说的 AppImage,Snap,以及 Flatpak 这三种流行的包管理方式中,其中 Snap 是 Ubuntu 的杰作,也就是 Ubuntu 背后的公司 Canonical 搞的,所以 Snap 都会随着 Ubuntu 一起发行。
由于 Ubuntu 在 Linux 操作系统中占有非常重要地位,使用率非常高。连带的导致 Snap 也被使用的越来越多。这并不是什么坏现象,对吧。但可惜事实是,Snap越发的不受到欢迎。
什么原因?听我道来。
Snap 与 APT
在说 Snap 为什么不受欢迎之前,说回 Snap 和 APT 的这两者的关系与冲突吧。
如我以前在相关的文章中也阐述过了,Ubuntu 其实是基于 Debian 基础之上构建的操作系统,而 Debian 使用的是 APT 包管理。
APT 包管理其实是你可以简单理解为 DEB + 依赖管理,它是基于 DEB 之上的包管理工具。
所以,问题就来了,Ubuntu 做为一个 Debian 系的操作系统,其本身是带有 APT 包管理的,现在自己又整了个 Snap 包管理,理所当然的这两者是存在冲突的了。
Ubuntu 承诺不会移除 APT 包管理,当然 Ubuntu 一直也做到了,现在无论在哪个 Ubuntu 的发行版本中,你仍然可以使用 APT 来安装软件。
但这不表示冲突就不存在,Ubuntu 本身是肯定有偏好的。做为一个商业公司,把资源投入到自己的产品中,这也是理所当然的吧。毕竟这也是建立生态与产品护河城的一种方式。
比如 Ubuntu 的软件商店管理其实是基于 Snap 而不是 APT 的。你用 Ubuntu 的商店安装的软件全是 Snap 格式的,并不是 DEB 格式的。
Snap 的性能比 Deb 还是差很多,这一点就先不说了。
更夸张的是,Ubuntu 走的有点过了,做出了一些令人难以接受的操作,比如当你在 Ubuntu 上输入下述命令时:
#使用APT来安装开源的chromium
sudo apt install chromium
这个命令的本意是使用 APT 来安装 Chromium 浏览器,APT 是 DEB 包管理,当然安装的应该是 Chromium 的 DEB 包才对。
只可惜,在 Ubuntu 中,如果你使用的是上述命令,安装的却是 Chromium 的 Snap 版本。
Ubuntu 的这种行为,已经明显越界了。甚至我们可以理解为它在 APT 中添加了特别的后门逻辑与程序来达到它的目的。
Snap 到底怎么了?
Snap有很多问题,比如几个比较明显的缺点是性能相对较差,软件包的体积大,中心化的软件商店,不透明的运行机制等,但最关键的一个点在于:
它违背了 Linux 操作系统的理念与精神
不管 Linux 有多少个发行版本,它们始终都有一个共同的理念与精神,就是遵守开源与自由的理念。
因为这个理念与精神,你可以发现,所有 Linux 都是开源与自由的操作系统。无论是在桌面还是服务器领域,你可以随心所欲的切换任何一个系统不会被限制。
就算是 Redhat 这样的商业巨头,它的 YUM 包管理,也是开源与自由的,并不只属于 Redhat 。比如CentOS 可以建立自己的 YUM 软件仓库。
但 Ubuntu 的 Snap 越过了这个界线,虽然它有一部分是开源的,但事实上,Snap 是一个中心化的包管理,它有一个类似 App Store 这样的中心存在,当然是由 Canonical 来维护管理的。
而除了Canonical 以外,其它都无法复制或运营一个自己的 Snap 软件管理中心,也就是你只能使用 Canonical 的这个。因为它有一些专有实现在其中。
这种行为,已经明显违背了 Linux 操作系统的核心理念与精神,在开源与自由的 Linux 中,是不可能受到欢迎的。
Ubuntu 的这些行为受到了明显的批评与抵制,Linux Mint 在其最新20版本中,已经删除了 Snap 包管理,并默认不允许安装 Snap。
Linux Mint 关于移除 Snap 的申明
Following the decision made by Canonical to replace parts of APT with Snap and have the Ubuntu Store install itself without users knowledge or consent, the Snap Store is forbidden to be installed by APT in Linux Mint 20.
Redhat 与 Canonical
最后,说起 Linux,就不得不说起 Redhat 与 Canonical 这两个商业公司,Redhat 是服务器领域非常知名的 Linux 商业公司,而 Canonical 则在桌面 Linux 做的非常出色。
但 Redhat 明显非常克制,它一直都是非常遵守自由与开源的理念,Redhat 通过售卖专业的服务来赚取利润,而在过往的十多年中,Redhat 始终是 Linux 内核的最大贡献商业公司。REHL 也是原始的 Linux 发行版本,类似 CentOS 这样的,是 REHL 开源的受益者。
而相比之下,Canonical 的 Ubuntu 本身是基于 Debian 基础之上的再发行版本,Linux 内核的贡献也远远比不上 Redhat,还整出了 Snap 这种专有的中心化的专有包软件管理,步伐迈的有点过大了。
做为商业公司,通过各种方式赚取利润是理所当然的,但要遵守你所有的领域的基本理念与原则也应该属于最基本的操守。
Ubuntu 对于在桌面 Linux 的卓越贡献当然是值得赞赏的,但它在 Snap 的这种行为上,理所当然主流都不会欢迎它的。
所以,现在你知道为什么 Snap 包管理不受欢迎了吧。
发表评论