您的位置:首页 > 编程语言 > PHP开发

Flatpak打包更新(1)——Flatpak 介绍

2018-03-31 23:52 429 查看
基本概念
运行时(Runtimes)

绑定库(Bundled libraries)

沙盒

Portals

存储库

在hood下

参考文章:http://docs.flatpak.org/

flatpak是一种构建、发布、安装和运行应用的技术,它的桌面应用领域是linux桌面环境,尽管它也可以作为其他环境,例如嵌入式环境中进行应用程序的发布。

flatpak已经设计并且实现了以下几个目标:

允许应用安装在任何一个Linux发行版中;

给应用程序提供一致的环境,便于测试和减少bug;

在桌面上完全集成应用程序;

通过允许同时安装多个版本的运行时确保应用程序的前向兼容性;

允许应用程序在Linux发行版中使用不可用的库(或不一致可用);

将应用程序与操作系统解耦,使应用程序不依赖于每个特定的发行版;

通过在不同容器(sandboxes)来隔离不同的应用,来提高Linux桌面的安全性;

分散的应用分发,没有一个单独的,特定的存储库。

基本概念

我们能够通过很少的关键概念来理解flatpak,这也是它不同于其他软件包的地方。



运行时(Runtimes)

运行时提供了应用程序使用的基本依赖关系。每个应用程序必须针对运行时构建,并且此运行时必须安装在主机系统上才能运行应用程序(flatpak可以自动安装应用程序所需的运行时)。可以同时安装多个不同的运行时,包括同一运行时的不同版本。

目前只有很少的运行时可用,包括小的和稳定的Freedesktop运行时,还有包含GNOME和KDE的运行时。

运行时是分布不可知的,不依赖于特定的分发版本。这意味着它们为应用程序提供了一个稳定的交叉分配基础,并且允许应用程序继续工作,而不管操作系统更新如何。

~~运行时提供了应用所需的基础环境,现在已经有很多可用的运行时。可以从

绑定库(Bundled libraries)

如果应用程序需要运行时里面不存在的某些依赖项,那么它们可以与应用程序本身捆绑在一起。这为应用程序开发人员提供了他们使用的依赖关系的灵活性,包括使用:

在分发或运行时中不可用的库;

来自发行版或运行时库的不同版本的库

库的补丁版本

沙盒

应用flatpak,每个应用程序是建立和运行在一个叫做sandbox的孤立的环境。每一个沙盒包含一个应用和他的运行时。默认情况下,应用程序只能访问其沙箱的内容。访问用户文件,网络,图形插座,总线和设备上的子系统必须明确授予。无法访问其他事物,比如其他进程。

根据需要,沙盒内的一些资源需要暴露在外,以供主机系统使用。这些被称为“导出”,因为它们是从沙盒中导出的文件,并包含应用程序的
.desktop
文件和图标等内容。

Portals

Portals是应用程序可以通过它与沙箱内的主机环境进行交互的一种机制。他们能够与数据,文件和服务进行交互,而无需添加沙盒权限。

可以通过功能示例包括通过文件选择器对话框打开文件或打印实现Portals访问。接口工具包可以为门户实现透明支持,因此对沙箱外资源的访问将安全使用并开箱即用。

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

存储库

通常使用存储库存储和发布flatpak应用程序和运行时,这些存储库的行为与git存储库非常相似。flatpak存储库可以包含单个对象或多个对象,并且每个对象都是版本控制的,允许升级甚至降级。

每个使用flatpak的系统都可以配置为访问任意数量的远程存储库。一旦系统被配置为访问“远程”,远程存储库的内容可以被检查和搜索,并且可以将其用作应用程序和运行时的源。

当执行更新时,将从相关remote下载已安装应用程序和运行时的新版本。就像使用git一样,只下载版本之间的差异,这使得该过程非常高效。

在hood下

flatpak使用一些预先存在的技术。通常没有必要为了使用flatpak熟悉这些,虽然在某些情况下它可能是有用的。他们包括:

项目原子( Project Atomic)bubblewrap实用程序,它允许非特权用户使用以下内核特性设置和运行容器:

Cgroups

Namespaces

Bind mounts

Seccomp rules

systemd为沙箱设置cgroups

D-Bus是一种为应用程序提供高级API的完善方法

来自开放容器倡议的OCI格式,作为单一文件包的便捷传输格式

用于版本控制和分配文件系统树的OSTree系统

Appstream元数据,允许flatpak应用程序在软件中心应用程序中很好地显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  flatpak