如何在Linux中安装和使用Flatpak

时间:2020-03-21 11:47:53  来源:igfitidea点击:

在本教程中,我们将看到什么是Flatpak,如何在Linux上安装Flatpak,然后如何使用Flatpak命令行用户界面来安装应用程序。

Flatpak简介

有这么多的Linux发行版,而对于所有这些Linux发行版而言,打包应用程序都是非常耗时且困难的任务。
即使存在许多封装转换器,它们都具有有限的功能和兼容性问题。

为了克服此问题,Canonical引入了一种名为Snap的应用程序包格式。

Snaps最初是为Ubuntu操作系统开发的,但现在已被主要的Linux发行版所采用,包括Arch,Gentoo,Fedora,openSUSE等。
Snaps是与所有必需的库和依赖项捆绑在一起的单个二进制软件包。
我们可以将其安装在任何Linux发行版上,无论其版本和体系结构如何。
无需为每个发行版开发单独的应用程序!

与Snap相似,还有另一个名为Flatpak的应用程序包格式工具。
Flatpak是一个用于在不同的Linux发行版上构建,安装和运行应用程序以及运行时的系统。
现在,我们可以构建一个Flatpak应用程序并将其安装在不同的Linux版本上。
我们不必担心库和依赖项,所有内容都捆绑在一个应用程序本身中。

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

Flatpak最初由Alex Larsson开发,后来被Red Hat,Endless Computers和Collabora认可。
现在由独立的社区积极维护,该社区由贡献者,志愿者和支持组织组成。
Flatpak框架是用C编写的,并根据LGPL许可发布。

运行时间

每个flatpak应用程序都依赖于运行时,以便在主机系统上正常工作。
运行时不过是应用程序所需的一组基本依赖项(库)。
当我们使用flatpak命令安装应用程序时,将自动安装运行时。
运行时与发行版无关,因此它们可以在任何Linux发行版上工作。
一个以上的应用程序可以使用一个运行时。

当前有三种主要的运行时可用:Freedesktop,GNOME和KDE。
这些都托管在Flathub存储库中。

捆绑库

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

沙箱

Flaptpak应用程序是在称为“沙盒”的隔离环境中构建和运行的。
换句话说,flatpak应用程序与主机操作系统的其余部分以及其他应用程序隔离。
每个沙箱均包含应用程序及其运行时。
Flatpak应用程序默认情况下只能访问其沙箱的内容。
用户必须明确地授予对用户文件,网络,图形和设备的访问权限。

储存库

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

在Linux上安装Flatpak

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

要在Arch Linux和Manjaro Linux上安装Flatpak,请运行:

$sudo pacman -S flatpak

Debian Buster和更高版本的默认存储库中提供Flatpak。
要在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上,可以使用Zypper安装Flatpak:

$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软件应用程序的Flatpak插件使无需命令行即可安装应用程序成为可能。
要安装此插件,请运行:

$sudo apt install gnome-software-plugin-flatpak

在Solus上,使用以下命令安装flatpak:

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

在Mageia 6和更高版本上,可以将Flatpak与DNF一起安装:

$sudo dnf install flatpak

或者,使用'urpmi'进行安装,如下所示:

$sudo urpmi flatpak

Pop!_OS 20.04已安装Flatpak,默认情况下已配置Flathub。
如果使用的是Pop!_OS 19.10或者更早版本,请运行:

$sudo apt install flatpak

基本的OS 5.1和更高版本均提供了Flatpak支持。

对于其他Linux发行版,请参考官方安装链接。

Flatpak入门教程

有很多流行的应用程序,例如Gimp,Kdenlive,Steam,Spotify和Visual Studio代码等,都可以作为便签本使用。
要安装flatpak应用程序,我们需要首先添加flatpak存储库(或者远程数据库)。

1.添加远程存储库

正如我已经提到的,应用程序和运行时存储在存储库或者远程库中。
Flatpak的官方存储库是Flathub。

要在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应用程序(例如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应用程序

我们可以随时从应用程序启动器启动已安装的应用程序。
在命令行中,可以使用以下命令运行它,例如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, for example: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

列出特定存储库(例如flathub)中的应用程序和运行时,运行:

$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: 2017-09-02 10:02:20 +0000

10.卸载flatpak应用程序

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

$sudo flatpak uninstall org.gnome.Boxes

11.删除远程存储库

要删除远程主机,例如flathub,请执行以下操作:

$sudo flatpak remote-delete flathub

其中flathub是遥控器的名称。

12.删除未使用的运行时

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

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

$flatpak uninstall --unused

13.删除flatpak缓存

要在“ tmp”位置删除剩余的flatpak缓存,请运行:

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

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

在“/lib/systemd/system /”目录中创建一个名为“ clear_flatpak_cache.service”的服务文件,其内容如下:

[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选项和子命令的列表,并带有一些描述。