真有用?snap和flatpak通吃所有发行版的打包方式。

冯琪的博客 冯琪的博客     2022-08-07     527

关键词:

导读 最近我们听到越来越多的有关于Ubuntu的Snap包和由Red Hat员工Alexander Larsson创造的 Flatpak (曾经叫做 xdg-app)的消息。这两种下一代打包方法在本质上拥有相同的目标和特点:即不依赖于第三方系统功能库的独立包装。这种 Linux 新技术方向似乎自然会让人脑海中浮现这样的问题:独立包的优点/缺点是什么?这是否让我们拥有更好的 Linux 系统?其背后的动机是什么?为了回答这些问题,让我们先深入了解一下 Snap 和 Flatpak。

动机

根据Flatpak和Snap的声明,背后的主要动机是使同一版本的应用程序能够运行在多个 Linux 发行版。

“从一开始它的主要目标是允许相同的应用程序运行在各种 Linux 发行版和操作系统上。”—— Flatpak
“通用 Linux 包格式,使简单的二进制包能够完美的、安全的运行在任何 Linux 桌面、服务器、云和设备上。”——Snap

说得更具体一点,站在 Snap 和 Flatpak (以下称之为 S&F)背后的人认为,Linux 平台存在碎片化的问题。这个问题导致了开发者们需要做许多不必要的工作来使他的软件能够运行在各种不同的发行版上,这影响了整个平台的前进。

所以,作为 Linux 发行版(Ubuntu 和 Red Hat)的领导者,他们希望消除这个障碍,推动平台发展。但是,是否是更多的个人收益刺激了 S&F 的开发?

个人收益?

虽然没有任何官方声明,但是试想一下,如果能够创造这种可能会被大多数发行版(即便不是全部)所采用的打包方式,那么这个项目的领导者将可能成为一个能够决定 Linux 大船航向的重要人物。

优势

这种独立包的好处多多,并且取决于不同的因素。这些因素基本上可以归为两类:

用户角度

+ 从 Liunx 用户的观点来看:Snap 和 Flatpak 带来了将任何软件包(软件或应用)安装在用户使用的任何发行版上的可能性。

例如你在使用一个不是很流行的发行版,由于开发工作的缺乏,它的软件仓库只有很稀少的包。现在,通过 S&F 你就可以显著的增加包的数量,这是一个多么美好的事情。

+ 同样,对于使用流行的发行版的用户,即使该发行版的软件仓库上有很多的包,他也可以在不改变它现有的功能库的同时安装一个新的包。

比方说, 一个 Debian 的用户想要安装一个 “测试分支” 的包,但是他又不想将他的整个系统变成测试版(来让该包运行在更新的功能库上)。现在,他就可以简单的想安装哪个版本就安装哪个版本,而不需要考虑库的问题对于持后者观点的人,可能基本上都是使用源文件编译他们的包的人,然而,除非你使用类似 Gentoo 这样基于源代码的发行版,否则大多数用户将从头编译视为是一个恶心到吐的事情。

+ 高级用户,或者称之为 “拥有安全意识的用户” 可能会觉得更容易接受这种类型的包,只要它们来自可靠来源,这种包倾向于提供另一层隔离,因为它们通常是与系统包想隔离的。

* 不论是 Snap 还是 Flatpak 都在不断努力增强它们的安全性,通常他们都使用 “沙盒化” 来隔离,以防止它们可能携带病毒感染整个系统,就像微软 Windows 系统中的 .exe 程序一样。(关于微软和 S&F 后面还会谈到)

开发者角度

与普通用户相比,对于开发者来说,开发 S&F 包的优点可能更加清楚。这一点已经在上一节有所提示。尽管如此,这些优点有:

+ S&F 通过统一开发的过程,将多发行版的开发变得简单了起来。对于需要将他的应用运行在多个发行版的开发者来说,这大大的减少了他们的工作量。

++ 因此,开发者能够更容易的使他的应用运行在更多的发行版上。

+ S&F 允许开发者私自发布他的包,不需要依靠发行版维护者在每一个/每一次发行版中发布他的包。

++ 通过上述方法,开发者可以不依赖发行版而直接获取到用户安装和卸载其软件的统计数据。

++ 同样是通过上述方法,开发者可以更好的直接与用户互动,而不需要通过中间媒介,比如发行版这种中间媒介。

缺点

qd

膨胀。就是这么简单。Flatpak 和 Snap 并不是凭空变出来它的依赖关系。相反,它是通过将依赖关系预构建在其中来代替使用系统中的依赖关系。

就像谚语说的:“山不来就我,我就去就山”。

之前提到安全意识强的用户会喜欢 S&F 提供的额外的一层隔离,只要该应用来自一个受信任的来源。但是从另外一个角度看,对这方面了解较少的用户,可能会从一个不靠谱的地方弄来一个包含恶意软件的包从而导致危害。

上面提到的观点可以说是有很有意义的,虽说今天的流行方法,像 PPA、overlay 等也可能是来自不受信任的来源。但是,S&F 包更加增加这个风险,因为恶意软件开发者只需要开发一个版本就可以感染各种发行版。相反,如果没有 S&F,恶意软件的开发者就需要创建不同的版本以适应不同的发行版。

原来微软一直是正确的吗?

考虑到上面提到的,很显然,在大多数情况下,使用 S&F 包的优点超过缺点。至少对于二进制发行版的用户,或者重点不是轻量级的发行版的用户来说是这样的。

这促使我问出这个问题,可能微软一直是正确的吗?如果是的,那么当 S&F 变成 Linux 的标准后,你还会一如既往的使用 Linux 或者类 Unix 系统吗?很显然,时间会是这个问题的最好答案。

不过,我认为,即使不完全正确,但是微软有些地方也是值得赞扬的,并且以我的观点来看,所有这些方式在 Linux 上都立马能用也确实是一个亮点。

本文地址: http://www.linuxprobe.com/snap-flatpak-really.html

真有用?snap和flatpak通吃所有发行版的打包方式。

...多的有关于Ubuntu的Snap包和由RedHat员工AlexanderLarsson创造的Flatpak(曾经叫做xdg-app)的消息。这两种下一代打包方法在本质上拥有相同的目标和特点:即不依赖于第三方系统功能库的独立包装。这种Linux新技术方向似乎自然会让人脑... 查看详情

跨发行版应用打包格式flatpak发布

...看书籍《Linux就该这么学》GNOME项目组的AllanDay正式发布了Flatpak,这并不是我们第一次提及Flatpak,你可能已经知道它是一个无依赖关系的、跨发行版的软件打包框架,它可以让用户在多个基于Linux内核的操作系统上使用各种桌面... 查看详情

idea打包时可以设置不用跟新包

...MySQL通过mysql_secure_installation方式修改密码真有用?Snap和Flatpak通吃所有发行版的打包方式。tween.js是一款可生成平滑动画效果的js动画库。tween.js允许你以平滑的方式修改元素的属性值。它可以通过设置生成各种类似CSS3的动画效果... 查看详情

fedora安装snapd和snap软件包(代码片段)

...Snappy。与RPM和Deb不同的是,Snap软件包可以安装并运行在所有Linux发行版。Snap包是一个经过压缩的文件系统,由宿主机操作系统动态挂载到/snap目录。其携带的元数据由sn 查看详情

ubuntusnap接管linux桌面和iot软件的发行

...Ubuntu的新Snap程序包格式。但是就在几个月之后,很多Linux发行版的开发者和公司都宣布他们会把Snap作为通用Linux程序包格式。为什么呢?因为Snap能使一个单一的二进制程序包可以完美、安全地运行在任何Linux台式机、服务器、云... 查看详情

使用snap

...da等,以及apt等等 snap提供了一个统一的体验在各种Linux发行版上关于如何使用snap参考这里 另外有关有缺少中国镜像,希望以后能够出现一个中国版的镜像 查看详情

华为od机试2023最新linux发行版的数量(c++100%)

题目描述Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ubuntu基于Debian开发,而Mint又基于Ubuntu开发,那么我们认为Mint同Debian也存在关联。发行版集是一个或多个相关存在关联... 查看详情

华为od机试真题js实现linux发行版的数量2023q1|100分

   所有题目均有四种语言实现。C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目  Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ubuntu基于De... 查看详情

linux降级flatpak包(代码片段)

导读Flatpak软件包的一个鲜为人知的特点是,它允许你对已安装的应用程序进行降级。下面是如何使用它的方法。从技术上讲,小版本或次要更新是为了解决问题。但是,当某些更新破坏你当前的工作流程时,情况可能会变得更... 查看详情

在具有 AdHoc 配置文件的设备上安装 AppStore 发行版的问题

】在具有AdHoc配置文件的设备上安装AppStore发行版的问题【英文标题】:ProblemswithinstallingAppStoredistributionbuildondevicewithAdHocprofile【发布时间】:2014-10-0323:12:46【问题描述】:在我的iPhone中安装Appstore分发版本/发行版时遇到问题。看... 查看详情

华为od机试真题python实现linux发行版的数量2022.11q4新题

 所有题目均有三种语言实现。C++实现目录、Python实现目录、Java实现目录题目题目描述:        Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ub... 查看详情

华为od机试真题java实现linux发行版的数量2022.11q4新题

 所有题目均有三种语言实现。C++实现目录、Python实现目录、Java实现目录题目题目描述:        Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ub... 查看详情

华为od机试真题c++实现linux发行版的数量2022.11q4新题

 所有题目均有三种语言实现。C++实现目录、Python实现目录、Java实现目录题目题目描述:        Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ub... 查看详情

开源协定

...RHEL是什么关系?GNU/LinuxDistributionTimeline中显示了97年红帽发行版出现,红帽主线版的企业版的二次发行版是CentOS,则可以说明:CentOS是红帽企业版的二次发行版。GPL,LGPL,Apache,BSD具体细节?650)this.width=650;"src="https://s3.51cto.com/wyf 查看详情

linux发行版的软件包安装管理程序

...源吗,如果可以应该怎样配置?可以将Fedora的源配给yum(发行版不限,只要装上了yum),也可以将Ubuntu源配给apt(同样不限发行版)。配置方法是随软件包管理程序的,跟发行版无关(各发行版可能会有各自的配置喜好),一般在/... 查看详情

microk8s搭建(代码片段)

...通过在单个快照包中打包Kubernetes,Docker.io,iptables和CNI的所有上游二进制文件来实现此隔离。snap包是一个应用程序容器-您可以将其想象为Docker容器的轻量级版本。它使用了许多相同的底层技术进行隔离,而没有网络隔离的所有... 查看详情

firstblood

...的发行版,并描述不同发行版之间的联系与区别。联系:所有的发行版都使用linux内核;都需要遵循GNU的GPL协定;所有的发行版都有自己的版本号,版本格式约定基本一样(主版本号.次版本号.发行号或修正号)。区别:发行版... 查看详情

查看linux版本信息的n种方法(代码片段)

...统是发行版的具体版本号。-c发行版代号。-a显示上面的所有信息。-h显示帮助信息。lsb_release-a这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。3.cat/etc/issue这个查看的是发行版的版本号,可以一眼看出是ubuntu... 查看详情