当前位置:首页>Linux>Flatpak 使用入门指南:Linux 上好用的跨发行版软件生态

Flatpak 使用入门指南:Linux 上好用的跨发行版软件生态

  • 2026-10-11 05:33:21
Flatpak 使用入门指南:Linux 上好用的跨发行版软件生态

Linux 发行版众多,同一软件在 Ubuntu、Fedora、Arch、Debian 上安装命令各不相同,或者系统的软件仓库里找不到想要的软件版本。

有的系统使用 apt:

sudo apt install xxx
有的系统使用 dnf:
sudo dnf install xxx
还有 pacman、zypper……

对于开发者来说,需要维护多个发行版的软件包;对于用户来说,也意味着学习成本更高。

于是,Linux 社区诞生了一个跨发行版的软件分发方案——Flatpak。

这里就简单介绍一下 Flatpak,以及初次使用时应该知道的一些事情。


什么是 Flatpak?

Flatpak 这个名字有两层意思,既代表了一套跨发行版应用分发框架,也代表了安装在系统中的命令行工具。

第一层:Flatpak 框架(Framework)

这是最广义的 Flatpak。

它不仅仅是一个安装工具,而是一整套跨发行版应用分发方案,包括:

  • 应用打包格式(Bundle)
  • Runtime(运行时)
  • 沙盒(Sandbox)
  • 权限模型(Permission)
  • 软件仓库(Repository)
  • 更新机制(OSTree)
  • Portal 接口
  • Bubblewrap 沙盒实现

它的目标只有一个:

让同一个 Linux 应用能够在不同发行版上,以统一、安全的方式安装和运行。

因此,可以说:

Flatpak 是一个跨 Linux 发行版的软件分发框架。


第二层:flatpak 命令

当我们在终端输入:

flatpak installflatpak updateflatpak run

这里的 flatpak,指的是安装到系统里的命令行工具。

它负责完成各种实际操作,例如:

  • 安装应用
  • 卸载应用
  • 更新应用
  • 添加软件仓库(Remote)
  • 下载 Runtime
  • 创建应用沙盒
  • 配置权限
  • 启动应用
  • 管理本地仓库

它更像是 Flatpak 框架的"管理客户端"。


Flatpak 的几个优点

① 跨发行版

开发者只需要维护一份 Flatpak 包。用户不用关心自己是什么发行版。

例如:

  • Fedora

  • Ubuntu

  • Debian

  • Linux Mint

  • Arch Linux

安装命令都是一样的:

flatpak install ...

② 软件更新更及时

很多发行版的软件仓库,为了保证稳定性,软件版本可能比较旧。

而 Flatpak 往往由软件开发者或社区直接维护,更新速度通常更快。

例如:

  • Firefox

  • LibreOffice

  • OBS Studio

  • Krita

  • Blender

Flatpak 版本通常都比较新。


③ 应用拥有独立运行环境(Runtime)

Flatpak 不依赖系统安装的各种库,而是使用自己的 Runtime。

例如:

  • GTK

  • Qt

  • OpenSSL

都可以由 Runtime 提供。

因此不会因为系统升级导致软件无法运行,也减少了"依赖地狱"的问题。


④ 更好的安全性

Flatpak 最大的特点之一,就是沙盒(Sandbox)。

默认情况下,Flatpak 应用:

  • 无法随意读取整个 Home 目录

  • 无法随意访问系统文件

  • 权限都是按需授予

例如:

应用想访问你的 Documents 文件夹,需要经过系统授权。想调用摄像头、麦克风,也需要获得对应权限。相比传统 Linux 软件,安全性更高。


Flatpak 和 Flathub 是什么关系?

  • Flatpak 是一个技术框架和开源项目,由独立社区(最早由 Red Hat 工程师主导)开发,旨在提供去中心化的打包和分发机制。
  • Flathub 是一个独立的组织和托管平台,由 Linux 基金会(Linux Foundation) 赞助和托管,由 Flatpak 的部分核心维护者与 GNOME 基金会、KDE 基金会等共同管理。

    Flathub 并不是 Flatpak 官方(Red Hat 或 Flatpak 核心开发团队)“独占”或“钦定”的唯一官方仓库,但在实际生态中,它扮演着事实上的官方标准仓库(De facto standard repo)角色。

就像:

  • apt ←→ Ubuntu 软件源

  • dnf ←→ Fedora 仓库

一样。

真正的软件,大多数都来自:

Flathub

Flathub 可以理解成:

Linux 最大的 Flatpak 软件仓库。

里面已经拥有数千个应用,包括:

  • Firefox

  • Chromium

  • VLC

  • OBS Studio

  • Steam

  • Spotify

  • Discord

  • GIMP

  • Krita

  • Blender

……

几乎日常桌面软件都能找到。


第一次使用 Flatpak,需要添加 Flathub

有些发行版(例如 Fedora)默认已经安装了 Flatpak,但并不会默认启用完整的 Flathub 仓库。

因此第一次使用时,可以先查看当前仓库:

flatpak remotes
如果没有看到:
flathub
可以用以下命令添加:
flatpak remote-add --if-not-exists flathub \https://flathub.org/repo/flathub.flatpakrepo
随后更新一下仓库信息:
flatpak update
以后安装软件就非常方便了。

例如安装 VLC:

flatpak install flathub org.videolan.VLC
卸载软件:
flatpak uninstall flathub org.videolan.VLC
仅列出已安装的“桌面应用”(排除底层运行时)
flatpak list --app

Bazaar —— 图形化应用商店

虽然命令行功能很完善易用,但图形界面更容易被用户接受。

Bazaar是Flatpak的图形化应用商店,现代软件商店的基本功能它都有,软件源专注于flathub。

它支持:

  • 浏览 Flathub 软件

  • 搜索软件

  • 查看截图

  • 查看更新日志

  • 一键安装

  • 一键卸载

  • 更新应用

对于用户来说,比命令行更加直观。

如果平时主要使用 GNOME 桌面,推荐安装。


Flatseal —— 权限管理神器

Flatpak 的特点之一是沙盒,权限划分很细致,但使用中也会带一些不便,可能常需要根据个人需求定制软件的权限。

如果某个软件需要:

例如:

  • 读取整个 Home

  • 访问 Downloads

  • 使用 SSH Key

  • 调用 Docker Socket

这时调整软件权限,使用Flatseal就非常方便直观。打开Flatseal以后,每个应用都可以分别设置:

  • 文件系统权限

  • 网络权限

  • USB

  • GPU

  • 环境变量

  • Session Bus

  • System Bus

  • Portal

等等。

例如:

你可以只允许某个软件访问:

~/Downloads, 而不是整个 Home。也可以关闭某些权限,进一步提升安全性。对于经常使用 Flatpak 的用户来说,Flatseal 几乎是必装软件。

如何查看一个 Flatpak 应用拥有的权限?

命令行可以直接查看:

flatpak info --show-permissions 应用ID
例如:
flatpak info --show-permissions org.chromium.Chromium
就可以看到:
  • 文件系统权限

  • Socket

  • Device

  • Environment

  • D-Bus

  • Portal

等详细信息。

如果只是日常使用,则直接使用 Flatseal 查看会更加直观。


添加一些自定义设置的方法

有时需要在应用快捷方式.desktop文件中增加选项(比如强制mpv player开启硬件加速 又或 开启chrome的一些功能等等),但在面对flatpak应用时这样做无法持久化,因为flatpak在每次升级应用后会重置.desktop文件,所以需要把.desktop文件复制到用户文件夹来让改动持久化。

首先要找到flatpak应用的.desktop文件位置,不同发行版位置会有区别,准 确位置可以通flatseal查看,但通常位置都在:

/var/lib/flatpak/exports/share/applications

找到要修改的文件复制到:

~/.local/share/applications

然后再对复制后的文件进行修改即可。


flatpak的代理设置

flatpak命令自身暂时没有代理选项,但是会读取环境变量中http代理设置,设置方法可参考:

一些常用 CLI 命令行程序代理设置方法 - 备忘

因为Bazaar应用商店的软件源是flathub, 通常需经代理才能流畅访问,给Bazaar单独设代理较方便方法是在flatseal中单独给Bazaar增加环境变量http_proxy和https_proxy。

最新文章

随机文章