如何在 Linux 中安装和使用 Flatpak

在本教程中,我们将了解什么是 Flatpak、如何在 Linux 上安装 Flatpak 以及如何使用 Flatpak 命令行用户界面安装应用程序。

Flatpak 简介

有如此多的 Linux 发行版,并且为所有这些 Linux 发行版打包应用程序是一项非常耗时且艰巨的任务。 尽管存在许多包转换器,但它们都具有有限的功能和兼容性问题。

为了克服这个问题,一种名为的应用程序包格式 折断 由 Canonical 引入。 Snaps 最初是为 Ubuntu 操作系统开发的,但现在被主要的 Linux 发行版采用,包括 Arch、Gentoo、 FedoraopenSUSE 等。

snap 是与所有必需的库和依赖项捆绑在一起的单个二进制包。 您可以将它安装在任何 Linux 发行版上,无论其版本和架构如何。 无需为每个发行版开发单独的应用程序!

与 Snap 类似,还有另一个应用程序包格式工具,称为 平板包装. Flatpak 是一个在不同 Linux 发行版上构建、安装和运行应用程序和运行时的系统。

您现在可以构建单个 Flatpak 应用程序并将其安装在不同的 Linux 版本上。 您不必担心库和依赖项,所有内容都捆绑在一个应用程序本身中。

另一个值得注意的特性是我们可以在 Linux 系统中同时安装同一个应用程序的多个版本。 例如,可以在同一系统上安装 VLC 播放器版本 2.1、2.2 和 2.3。 如果您是开发人员,您可以一次测试不同版本的应用程序。

Flatpak 最初由 亚历克斯·拉尔森 后来得到红帽、Endless Computers 和 Collabora 的认可。 它现在由一个由贡献者、志愿者和支持组织组成的独立社区积极维护。 Flatpak 框架是用 C 并在下发布 LGPL 执照。

运行时

每个 flatpak 应用程序都依赖于运行时才能在主机系统上正常工作。 运行时只不过是应用程序所需的一组基本依赖项(库)。

当我们使用 flatpak 命令安装应用程序时,将自动安装运行时。 运行时独立于发行版,因此它们可以在任何 Linux 发行版上运行。 多个应用程序可以使用一个运行时。

目前有三个主要的运行时可用: 免费桌面, 侏儒KDE. 这些都托管在 平面图 存储库。

捆绑的库

开发人员将运行时中不可用的库与应用程序捆绑在一起。 库也可以是与运行时中的库和/或库的补丁版本不同的库版本。

沙盒

Flaptpak 应用程序在称为“沙盒”的隔离环境中构建和运行。 换句话说,flatpak 应用程序与主机操作系统的其余部分和其他应用程序是隔离的。

每个沙箱都包含应用程序及其运行时。 默认情况下,flatpak 应用程序只能访问其沙箱的内容。 对用户文件、网络、图形和设备的访问必须由用户明确给出。

存储库

所有 flatpak 应用程序及其运行时都存储在一个称为“存储库”的中心位置。 平面图 是所有 Flatpak 应用程序的官方存储库。 我们可以使用 flatpak 命令行界面访问和安装应用程序和运行时。

在 Linux 上安装 Flatpak

Flatpak 在流行的 Linux 发行版的默认存储库中可用,例如 Arch Linux、Debian、 Fedora、Gentoo、Red Hat、Linux Mint、openSUSE、Solus、Mageia 和 Ubuntu 发行版。

安装 Flatpak Arch Linux 及其变体 EndeavourOSManjaro Linux, 跑:

$ sudo pacman -S flatpak

Flatpak 在默认存储库中可用 Debian Buster 和更新的版本。 要在 Debian 上安装 Flatpak,请运行:

$ sudo apt install flatpak

如果您在 Debian 上使用 GNOME DE,请使用以下命令为 GNOME 软件安装 Flatpak 插件:

$ sudo apt install gnome-software-plugin-flatpak

Fedora, Flatpak 默认安装。 您所要做的就是启用启用 Flathub,如下一节所述。

以防万一由于任何原因未安装,请运行:

$ sudo dnf install flatpak

RHEL 7, 跑:

$ sudo yum install flatpak

CentOS 7, Flatpak 默认安装。 所以不需要设置!

从…开始 Linux Mint 18.3, flatpak 默认安装。 因此,无需设置。

openSUSE Tumbleweed,Flatpak 可以使用 Zypper 安装:

$ sudo zypper install flatpak

Ubuntu 18.10 (Cosmic Cuttlefish) 和更新的 Ubuntu 版本,使用以下命令安装 flatpak:

$ sudo apt install flatpak

在较旧的 Ubuntu 版本上,添加以下存储库并安装 Flatpak,如下所示。

$ sudo add-apt-repository ppa:alexlarsson/flatpak
$ sudo apt update
$ sudo apt install flatpak

GNOME Software 应用程序的 Flatpak 插件可以在不需要命令行的情况下安装应用程序。 要安装此插件,请运行:

$ sudo apt install gnome-software-plugin-flatpak

索卢斯使用命令安装 flatpak:

$ sudo eopkg install flatpak xdg-desktop-portal-gtk

魔法师 6 和更新版本,您可以使用 DNF 安装 Flatpak:

$ sudo dnf install flatpak    

或者,安装 urpmi,如下所示:

$ sudo urpmi flatpak

流行!_OS 20.04 默认安装了 Flatpak 并配置了 Flathub。 如果您使用的是 Pop!_OS 19.10 或更早版本,请运行:

$ sudo apt install flatpak

基本操作系统 5.1 更新的版本提供了开箱即用的 Flatpak 支持。

其他Linux发行版参考官方安装 关联.

Flatpak 初学者指南

有许多流行的应用程序,如 Gimp、Kdenlive、Steam、Spotify 和 Visual Studio Code 等,可作为 flatpak 使用。 要安装 flatpak 应用程序,我们需要首先添加 flatpak 存储库(或远程)。

1.添加远程仓库

正如我已经提到的,应用程序和运行时存储在存储库或远程。 flatpak 的官方存储库是 平面图.

要在 Linux 上启用 Flathub 存储库,只需运行以下命令:

$ sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

还有许多其他非官方的 flatpak 存储库可用。 进行快速网络搜索以找到它们。

2.列出遥控器

要列出所有已配置的远程存储库,请运行:

$ flatpak remotes

样本输出:

Name    Options
flathub system

如您所见,上述命令列出了您在系统中添加的遥控器。 它还列出了远程是按用户还是系统范围添加的。 就我而言,我在系统范围内添加了 flathub 存储库。

3. 安装 Flatpak 应用程序

在本节中,我们将了解如何安装 flatpak 应用程序。

要安装 Flatpak 应用程序,对于 example GNOME 盒子,运行:

$ flatpak install flathub org.gnome.Boxes

上述命令将在系统范围内安装应用程序。

如果您不想在系统范围内安装应用程序,您还可以为每个用户安装 flatpak 应用程序,如下所示。

$ flatpak install --user <name-of-app>

所有已安装的应用程序都将存储在 $HOME/.var/app/ 地点。

$ ls $HOME/.var/app/
com.github.calo001.fondo com.github.tchx84.Flatseal org.gnome.Boxes

4. 运行 Flatpak 应用程序

您可以随时从应用程序启动器启动已安装的应用程序。 从命令行,您可以运行它,对于 example GNOME 框,使用命令:

$ flatpak run org.gnome.Boxes

Flatpak 将为所有 flatpak 应用程序添加菜单条目。 因此,您可以直接从菜单或应用程序启动器启动。

5. 搜索 flatpak 应用

要搜索应用程序:

$ flatpak search gimp

样本输出:

Name                  Description                                                                                      Application ID               Version Branch Remotes
GNU Image Manipulati… Create images and edit photographs                                                               org.gimp.GIMP                2.10.20 stable flathub
GIMP User Manual      GIMP User Manual                                                                                 org.gimp.GIMP.Manual         2.10    2.10   flathub
Resynthesizer         Set of GIMP plug-ins that heal (in-paint), synthesize texture, theme an image, and more          …p.GIMP.Plugin.Resynthesizer 2.0.3   2-3.36 flathub
GimpLensfun           GimpLensfun is a Gimp plugin to correct lens distortion using the lensfun library and database.  org.gimp.GIMP.Plugin.Lensfun 0.2.4   2-3.36 flathub
Fourier               A simple GIMP plug-in to do fourier transform on your image.                                     org.gimp.GIMP.Plugin.Fourier 0.4.3   2-3.36 flathub
BIMP                  Batch Image Manipulation Program, a GIMP plugin to apply a set of manipulations to an entire gr… org.gimp.GIMP.Plugin.BIMP    2.4     2-3.36 flathub
LiquidRescale         LiquidRescale plugin to resize pictures non uniformly while preserving their features, i.e. avo… …p.GIMP.Plugin.LiquidRescale 0.7.2   2-3.36 flathub
G'MIC                 GREYC's Magic for Image Computing                                                                org.gimp.GIMP.Plugin.GMic    2.9.2   2-3.36 flathub
FocusBlur             Focus Blur plug-in crete a blurring effect similar to Depth of Field.                            ….gimp.GIMP.Plugin.FocusBlur 3.2.6   2-3.36 flathub
Glimpse               Create images and edit photographs                                                               org.glimpse_editor.Glimpse   0.2.0   stable flathub
Scans to PDF          Create small, searchable PDFs from scanned documents                                             com.github.unrud.djpdf       0.1.2   stable flathub

此命令将从所有遥控器返回与字符串“gimp”匹配的所有应用程序。

6.列出本地安装的flatpak应用程序和运行时

要查看系统上所有已安装的 flatpak 应用程序和运行时,请运行:

$ flatpak list

样本输出:

Name                           Application ID                  Version Branch Installation
Fondo                          com.github.calo001.fondo        1.3.8   stable system
Flatseal                       com.github.tchx84.Flatseal      1.5.2   stable system
default                        …reedesktop.Platform.GL.default         19.08  system
Intel                          …eedesktop.Platform.VAAPI.Intel         19.08  system
openh264                       ….freedesktop.Platform.openh264 2.1.0   2.0    system
GNOME Boxes                    org.gnome.Boxes                 3.36.6  stable system
GNOME Application Platform ve… org.gnome.Platform                      3.36   system
Ambiance Gtk theme             org.gtk.Gtk3theme.Ambiance              3.22   system
Yaru-light Gtk Theme           org.gtk.Gtk3theme.Yaru-light            3.22   system

如果您想查看已安装的应用程序和运行时列表 安装尺寸, 采用 -d 旗帜。

$ flatpak list -d

样本输出:

… … … Version Branch Arch   Origin  Installation Ref                                               Active commit Latest commit Installed size …
… … … 1.3.9   stable x86_64 flathub system       com.github.calo001.fondo/x86_64/stable            4755529773f0  -              89.3 MB       …
… … … 1.6.2   stable x86_64 flathub system       com.github.tchx84.Flatseal/x86_64/stable          4e1efc03269e  -               2.9 MB       …
…  …         19.08  x86_64 flathub system       org.freedesktop.Platform.GL.default/x86_64/19.08  f68c8e930d04  -             255.7 MB       …
…  …         19.08  x86_64 flathub system       org.freedesktop.Platform.VAAPI.Intel/x86_64/19.08 19fe8e74d641  -              37.0 MB       …
… … … 2.1.0   2.0    x86_64 flathub system       org.freedesktop.Platform.openh264/x86_64/2.0      73f998362a6f  -             778.2 kB       …
… … … 3.36.6  stable x86_64 flathub system       org.gnome.Boxes/x86_64/stable                     98c619ed7873  -             706.9 MB       …
… … …         3.36   x86_64 flathub system       org.gnome.Platform/x86_64/3.36                    d79ff93caf2d  -             934.6 MB       …
… … …         3.22   x86_64 flathub system       org.gtk.Gtk3theme.Ambiance/x86_64/3.22            73fed99df212  -              16.3 MB       …
… … …         3.22   x86_64 flathub system       org.gtk.Gtk3theme.Yaru-light/x86_64/3.22          2573259417d8  -             718.3 kB       …

仅使用命令列出运行时:

$ flatpak list --runtime

样本输出:

Name                           Application ID                  Version Branch Installation
Locale                         com.github.calo001.fondo.Locale         stable system
default                        …reedesktop.Platform.GL.default         19.08  system
Intel                          …eedesktop.Platform.VAAPI.Intel         19.08  system
openh264                       ….freedesktop.Platform.openh264 2.1.0   2.0    system
Locale                         org.gnome.Boxes.Locale                  stable system
GNOME Application Platform ve… org.gnome.Platform                      3.36   system
Ambiance Gtk theme             org.gtk.Gtk3theme.Ambiance              3.22   system
Yaru-light Gtk Theme           org.gtk.Gtk3theme.Yaru-light            3.22   system

要仅查看应用程序而不查看运行时间,请改用此命令。

$ flatpak list --app

样本输出:

Name             Application ID                  Version      Branch      Installation
Fondo            com.github.calo001.fondo        1.3.8        stable      system
Flatseal         com.github.tchx84.Flatseal      1.5.2        stable      system
GNOME Boxes      org.gnome.Boxes                 3.36.6       stable      system

7. 列出远程应用程序和运行时

您还可以从远程存储库中查看可用应用程序和运行时的列表。

使用命令列出来自所有远程的应用程序和运行时:

$ flatpak remote-ls

仅列出运行时:

$ flatpak remote-ls --runtime

仅列出应用程序:

$ flatpak remote-ls --app

列出来自特定存储库的应用程序和运行时,例如 example 扁平化, 跑:

$ flatpak remote-ls flathub

要仅列出远程存储库中的应用程序,请运行:

$ flatpak remote-ls flathub --app

8. 更新 flatpak 应用程序

要更新所有 flatpak 应用程序,请运行:

$ flatpak update

要更新特定应用程序,我们会:

$ flatpak update org.gnome.Boxes

9. 查看 flatpak 应用程序的详细信息

要显示已安装应用程序的详细信息,请运行:

$ flatpak info org.gnome.Boxes

样本输出:

GNOME Boxes - Simple remote and virtual machines

          ID: org.gnome.Boxes
         Ref: app/org.gnome.Boxes/x86_64/stable
        Arch: x86_64
      Branch: stable
     Version: 3.36.6
     License: LGPL-2.1+
      Origin: flathub
  Collection: org.flathub.Stable
Installation: system
   Installed: 706.9 MB
     Runtime: org.gnome.Platform/x86_64/3.36
         Sdk: org.gnome.Sdk/x86_64/3.36

      Commit: 98c619ed78736e85433bcbecd5c4392ad30d4890a71ddc909f5b4c51dfcde340
      Parent: 72ec972e0ce7fdf640f478d406a8acad5f90ebd1f8c0ac330baa7ed3dd5ccd70
     Subject: Build vte from git master (a8cf05d9)
        Date: 2020-09-02 10:02:20 +0000

10.卸载flatpak应用程序

要删除 flatpak 应用程序,请运行:

$ sudo flatpak uninstall org.gnome.Boxes

11.删除远程存储库

要移除遥控器,对于 example 扁平化:

$ sudo flatpak remote-delete flathub

这里, 扁平化 是遥控器的名称。

12.删除未使用的运行时

删除所有依赖于特定运行时的应用程序后,运行时本身不会被自动删除。

要删除任何已安装应用程序未使用的运行时和扩展,请运行:

$ flatpak uninstall --unused

13.删除flatpak缓存

删除剩余的 flatpak 缓存 tmp 位置,运行:

$ sudo bash -c "! pgrep -x flatpak && rm -r /var/tmp/flatpak-cache-*"

如果您正在使用 systemd 作为您的默认系统管理员,您可以自动执行 flatpak 剩余缓存清理任务,如下所示。

创建一个名为 clear_flatpak_cache.service/lib/systemd/system/ 包含以下内容的目录:

[Unit]
Description=Flatpak cache cleaner

[Service]
ExecStart=bash -c "! pgrep -x flatpak && rm -r /var/tmp/flatpak-cache-*"

[Install]
WantedBy=multi-user.target

在启动时启动并启用此服务:

$ sudo systemctl enable --now clear_flatpak_cache

从现在开始,剩余的 flatpak 缓存文件将在启动时被清除。

14.修复flatpak安装

我们可以通过修剪和重新安装无效对象来修复 flatpak 安装。

为此,请运行:

$ flatpak repair

您还可以使用按用户和按系统进行修复 --user--system 标志。

修复每用户安装:

$ flatpak repair --user

修复每个系统的安装:

$ flatpak repair --system

15.查看flatpak历史

您可能已经安装、更新或删除了一些应用程序。 所有的 flatpak 交易都会被 flatpak 记录下来。

您可以查看这些日志以了解随着时间的推移对 Flatpak 安装所做的更改。

$ flatpak history

16.显示flatpak帮助部分

如需 flatpak 帮助,请运行:

$ flatpak --help

此命令将显示所有可用的 flatpak 选项和子命令的列表以及一些描述。

结论

本 flatpak 教程简要介绍了 Flatpak,以及 Flatpak 中使用的底层技术,例如运行时、远程、捆绑库和沙箱等。然后,它还解释了如何在 Linux 发行版上安装和使用 flatpak。

  • 如何使用 Flatseal 轻松配置 Flatpak 应用程序权限
  • Linux 包管理器比较——AppImage vs Snap vs Flatpak

资源: