关于 Flatpak

17 Mar 2025 | 4 分钟阅读

Flatpak 是 Linux 发行版的桌面软件平台。Flatpak 由一群长期从事 Linux 开发的开发者开发,然后他们决定推出一个独立的开源项目,名为 Flatpak。在本节中,我们将学习 Linux 的 Flatpak 发行版。此外,我们还将学习其架构、运行时环境、库和打包。

Flatpak 的用户

各种桌面应用程序都可以使用 Flatpak,它力求在应用程序的设计方式上尽可能地保持独立。对于编程语言、编译工具、工具包或框架的使用没有具体要求。

Flatpak 被配置为在 Linux 平台上运行,但它也支持其他基于 Linux 的操作系统。

为了实现桌面集成,Flatpak 唯一的技​​术标准是应用程序符合少量 Freedesktop 标准(请参阅要求与约定)。

为什么使用 Flatpak?

与在 Linux 上分发软件的其他方式相比,Flatpak 具有几个显著的优势。最重要的是,Flatpak 使几乎任何 Linux 发行版都能够安装和运行单个应用程序构建。

Flatpak 还为关键的 Linux 桌面提供了原生集成,允许用户通过其当前的桌面环境和工具轻松浏览、安装、运行和使用 Flatpak 应用程序。

Flatpak 有以下几个优点:

  • 向前兼容性:我们可以在不同版本的 Linux 上运行相同的 Flatpak 发行版,使用时不会出现任何问题。用户无需开发者端进行任何升级或更新包。
  • 维护的平台:这些平台包含一组称为运行时的依赖项,应用程序可以使用它们,这可以大大减轻应用程序的开发工作。
  • 打包:这提供了对用于构建应用程序的软件的完全控制。
  • 一致的应用程序环境:这也有助于识别错误和进行研究。

Flatpak 的基本概念

可以通过有限的几个主要概念来理解 Flatpak。在我们开始使用 Flatpak 之前,有一些基本术语是我们必须理解的,以便获得 Flatpak 的完整工作知识。

About Flatpak

运行时 (Runtimes)

运行时是应用程序使用的基本依赖项。

运行时与发行版无关,不依赖于独特的发行版版本。这意味着它们为应用程序提供了安全的、跨发行版的基石,并允许应用程序在操作系统发生变化时继续运行。

打包库 (Bundled libraries)

如果我们想在 Flatpak 中添加或修改任何附加功能,库就是我们可以从互联网上获取的东西。如果 Flatpak 发行版中未包含任何功能或工具,则会将其包含在库中。

根据需要,用户可以简单地下载库包并将其安装在自己的系统中。它们也可以包含不同工具和库的修补版本。

沙箱 (Sandboxes)

使用 Flatpak,每个应用程序都在一个称为“沙箱”的隔离环境中进行设计和运行。每个沙箱中都存储着应用程序及其运行时。默认情况下,程序只能访问其沙箱的内容。必须明确授予对用户目录、网络、图形套接字、总线子系统和计算机的访问权限。故意不允许访问其他内容,例如其他系统。

门户 (Portals)

应用程序在沙箱内与主机环境通信的环境称为门户。它们提供了高级功能,即每次系统想要与环境内的特定应用程序交互时,都不需要任何特定的权限。

可以通过接口工具包引入透明的门户支持,因此对沙箱外部资源的访问可以安全地开箱即用。

在沙箱权限中,可以找到有关门户的更多信息。

仓库 (Repositories)

通常,Flatpak 应用程序和运行时使用与 Git 仓库行为非常相似的仓库进行处理和发布。

使用 Flatpak 的任何设备都可以配置为拥有任意数量的远程仓库。

flatpak 命令

Flatpak 是 Flatpak 的主命令,后面可以附加其他命令。例如,flatpak install 是安装某物的命令,flatpak uninstall 是卸载某物的命令。

标识符

Flatpak 中的标识符是由唯一的 3 部分命名约定定义的运行时。例如,xyz.abc.pqr。

标识符三元组 (Identifier triples)

通常,使用对象的 ID 来引用对象是合适的。但是,在某些情况下,引用对象的特定版本或特定体系结构很重要。

Flatpak 可以使用对象的 triple 标识符来定义体系结构和变体。名称/体系结构/分支,如 com.company.App/i386/stable,具有这种形式。ID 是三元组的第一部分,体系结构是第二部分,分支是第三部分。

例如,com.company.App/stable 将实际指定分支,而 com.company.App/i386/ 仅指定体系结构。

Flatpak CLI 提供反馈,说明定义对象体系结构或分支是否合适。

系统与用户 (System versus user)

可以运行系统范围或每个用户的 Flatpak 命令。每个用户安装的程序和运行时仅对已安装它们的​​用户开放。

同样的原则也适用于仓库——所有用户都可以访问已添加到系统范围的仓库,而每个用户的仓库只能由单个用户访问。

默认情况下,Flatpak 命令是系统范围运行的。

然而,运行每个用户命令对于测试和创建目的可能很有用,因为以这种方式配置的对象其他设备用户将无法访问。使用 -user 选项来实现此目的,该选项可以与大多数 flatpak 命令组合使用。

如果命令是按用户而不是按系统范围执行的,则命令的行为方式完全相同。


下一个主题大数据技术