Flatpak打包(1)——Flatpak 介绍

Flatpak是一种在Linux环境下构建、发布和运行应用的技术,旨在提供跨发行版的兼容性和安全性。通过运行时、绑定库、SDK、扩展和沙盒实现应用的隔离与依赖管理。本文介绍了Flatpak的工作机制,包括运行时、绑定库的概念,以及沙盒环境的使用,同时讲解了Flatpak的命令行工具和标识系统。
摘要由CSDN通过智能技术生成

全部文章目录:
Flatpak打包(1)——Flatpak 介绍
Flatpak打包(2)——Flatpak应用元素
Flatpak打包(3)——应用Flatpak
Flatpak打包(4)——构建第一个Flatpak
Flatpak打包(5)——开始配置
Flatpak打包(6)——构建一个简单的应用
Flatpak打包(7)——Flatpak Builder
Flatpak打包(8)——应用Sandbox(沙盒)
Flatpak打包(9)——应用分发
Flatpak打包(10)——可用运行时(Runtime)
Flatpak打包(11)——命令参考
Flatpak打包(12)——Flatpak-builder命令参考

参考文章:http://docs.flatpak.org/en/latest/introduction.html

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

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

  • 允许应用安装在任何一个Linux发行版中;
  • 给应用程序提供一致的环境,便于测试和减少bug;
  • 将应用程序与操作系统解耦,使应用程序不依赖于每个特定的发行版;
  • 允许应用程序捆绑它们自己的依赖项,这样就可以使用Linux发行版没有提供的库,因此它们可以依赖于特定版本的库,甚至可以使用库的修补版本;
  • 通过在不同容器(sandboxes)来隔离不同的应用,来提高Linux桌面的安全性。

flatpak如何工作

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

运行时(Runtimes)

运行时提供了应用所需的基础环境,现在已经有很多可用的运行时。可以从 http://flatpak.org/runtimes.html 查找到目前可用的运行时。

每一个应用必须在一个runtimes下进行构建,并且为了保证应用能运行,还要保证runtimes安装在了电脑中。用户能安装很多不用的runtimes,也能安装同一个runtimes的不同版本。

绑定库(Bundled libraries)

如果应用程序需要运行时里面不存在的某些依赖项,那么它们可以与应用程序本身捆绑在一起。这允许应用程序使用分布中不可用的依赖项,或者使用安装在主机上的依赖项的不同版本。

SDK

sdk是一个运行时,包含运行时不需要的’devel’部分,比如构建和打包工具,头文件,编译器和调试器。每个应用程序都是针对与运行时(这是应用程序在运行时使用的运行时)配对的sdk构建的。

扩展

扩展是运行时或应用程序的可选附件。它们通常用于从运行时分割翻译和调试信息。例如,可以将org.freedesktop.platform.locale添加到org.freedesktop.platform运行时以添加翻译。

沙盒

应用flatpak,每个应用程序是建立和运行在一个孤立的环境。默认情况下,应用程序只能“看到”自身及其运行时。访问用户文件,网络,图形插座,总线和设备上的子系统必须明确授予。(如后面将要描述的,flatpak提供了几种方法来做到这一点),有意无法访问其他事物,比如其他进程。

Flatpak命令

flatpak是用于安装,删除和更新运行时和应用程序的命令。它也可以用来查看当前安装的内容,以及用于构建和分发应用程序包。flatpak --help提供了可用命令的完整列表。

大多数flatpak命令默认在系统范围内执行。要仅为当前用户执行命令,请使用--user选项。这允许运行时和应用程序包被安装在每个用户。

有关flatpak命令的更多信息,请参阅Command Reference

标识

flatpak使用唯一的名称来标识每个应用程序,运行时和sdk,这个名称有时用作名称/Arch/分支三元组的一部分。

命名

flatpak名称采用反向DNS地址的形式,如com.company.app。这个地址的最后一段是对象的名字,前面的部分是它所属的域。为了防止名称冲突,这个域应该对应一个dns注册地址。这意味着使用来自网站的域名,无论是应用程序还是组织。例如,如果应用程序Appapp.com上有自己的网页,则其flatpak名称将是com.app.app。多个应用程序可以属于同一个域,例如org.organization.app1org.organization.app2
如果您的应用程序没有注册域名,则可以使用第三方网站轻松获取。例如,github允许创建可用于此目的的个人页面。在这里,name.github.io的个人名字空间可以被用作应用程序标识符io.github.name.app的基础。
如果应用程序提供了一个D-Bus服务,则D-Bus服务名称应该与应用程序名称相同

确定三元组

许多flatpak命令只需要应用程序的名称,运行时或sdk。但是,在某些情况下,还需要指定体系结构和分支(分支允许指定特定的版本)。这是使用名称/Arch/分支三元组完成的。例如org.gnome.Sdk/x86_64/3.14org.gnome.Builder/i386/master

在hood下

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

  • 项目原子( Project Atomic)bubblewrap实用程序,它允许非特权用户使用以下内核特性设置和运行容器:
    • Cgroups
    • Namespaces
    • Bind mounts
    • Seccomp rules
  • systemd为沙箱设置cgroups
  • D-Bus是一种为应用程序提供高级API的完善方法
  • 来自开放容器倡议的OCI格式,作为单一文件包的便捷传输格式
  • 用于版本控制和分配文件系统树的OSTree系统
  • Appstream元数据,允许flatpak应用程序在软件中心应用程序中很好地显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值