flatpak 命令 #
flatpak
是一个用于构建、分发和运行沙盒化应用程序的工具。它提供了一种在不同 Linux 发行版上一致运行应用程序的方式,应用程序在沙盒中运行,与系统其余部分隔离,提高了安全性和兼容性。
语法 #
flatpak [选项] 命令 [参数...]
常用命令 #
命令 | 描述 |
---|---|
install |
安装应用程序或运行时 |
update |
更新应用程序或运行时 |
uninstall |
卸载应用程序或运行时 |
list |
列出已安装的应用程序和运行时 |
info |
显示应用程序或运行时的信息 |
search |
搜索远程仓库中的应用程序 |
run |
运行应用程序 |
override |
覆盖应用程序权限 |
make-current |
将应用程序版本设为当前版本 |
remote-add |
添加远程仓库 |
remote-delete |
删除远程仓库 |
remote-list |
列出配置的远程仓库 |
remote-info |
显示远程仓库信息 |
remote-ls |
列出远程仓库中的应用程序 |
repair |
修复 Flatpak 安装 |
create-usb |
将应用程序导出到 USB 驱动器 |
enter |
进入应用程序的命名空间 |
ps |
列出正在运行的 Flatpak 实例 |
kill |
终止正在运行的 Flatpak 实例 |
documents |
列出导出的文档 |
document-export |
导出文件到应用程序 |
document-unexport |
取消导出文件 |
permission-list |
列出权限 |
permission-show |
显示应用程序权限 |
permission-reset |
重置应用程序权限 |
build-init |
初始化构建目录 |
build |
在构建目录中运行命令 |
build-finish |
完成构建 |
build-export |
导出构建到仓库 |
build-bundle |
创建单文件包 |
build-import-bundle |
从单文件包导入 |
build-sign |
签名应用程序或运行时 |
build-update-repo |
更新仓库元数据 |
常用选项 #
全局选项 #
选项 | 描述 |
---|---|
-h, --help |
显示帮助信息 |
-v, --verbose |
显示详细输出 |
--ostree-verbose |
显示 OSTree 调试信息 |
--version |
显示版本信息 |
--default-arch |
显示默认架构 |
--supported-arches |
显示支持的架构 |
--gl-drivers |
显示可用的 GL 驱动程序 |
--installations |
显示系统安装位置 |
--user |
用户模式操作 |
--system |
系统模式操作 |
--installation=NAME |
使用指定的安装 |
安装选项 #
选项 | 描述 |
---|---|
--arch=ARCH |
指定架构 |
--no-related |
不安装相关的运行时 |
--no-deps |
不安装依赖 |
--no-pull |
不下载新数据 |
--reinstall |
重新安装应用程序 |
--app |
仅查看应用程序 |
--runtime |
仅查看运行时 |
--bundle |
从 bundle 文件安装 |
--from |
从指定的远程仓库安装 |
--sideload-repo |
从本地仓库安装 |
--gpg-file=FILE |
用于验证的 GPG 密钥 |
运行选项 #
选项 | 描述 |
---|---|
--command=COMMAND |
运行指定命令 |
--cwd=DIR |
在指定目录中运行命令 |
--branch=BRANCH |
使用指定分支 |
--arch=ARCH |
使用指定架构 |
--devel |
使用开发版本 |
--log-session |
启用会话日志 |
--log-system |
启用系统日志 |
--no-documents-portal |
不使用文档门户 |
--file-forwarding |
启用文件转发 |
--share=SHARE |
共享系统命名空间 |
--socket=SOCKET |
共享系统套接字 |
--device=DEVICE |
共享系统设备 |
--allow=FEATURE |
允许特性 |
--env=VAR=VALUE |
设置环境变量 |
--env-fd=FD |
从文件描述符读取环境变量 |
--own-name=NAME |
允许拥有 D-Bus 名称 |
--talk-name=NAME |
允许与 D-Bus 名称通信 |
--system-own-name=NAME |
允许拥有系统 D-Bus 名称 |
--system-talk-name=NAME |
允许与系统 D-Bus 名称通信 |
--persist=FILENAME |
持久化文件 |
常见用法 #
1. 添加远程仓库 #
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
这将添加 Flathub 仓库,这是最流行的 Flatpak 应用程序仓库。
2. 列出远程仓库 #
flatpak remote-list
3. 搜索应用程序 #
flatpak search application_name
例如:
flatpak search firefox
4. 安装应用程序 #
flatpak install flathub application_id
例如:
flatpak install flathub org.mozilla.firefox
5. 安装应用程序(用户模式) #
flatpak install --user flathub application_id
6. 运行应用程序 #
flatpak run application_id
例如:
flatpak run org.mozilla.firefox
7. 列出已安装的应用程序 #
flatpak list
8. 列出已安装的应用程序(详细信息) #
flatpak list --app --columns=name,application,version,branch,size,origin
9. 更新所有应用程序 #
flatpak update
10. 更新特定应用程序 #
flatpak update application_id
11. 卸载应用程序 #
flatpak uninstall application_id
12. 卸载未使用的运行时和扩展 #
flatpak uninstall --unused
13. 显示应用程序信息 #
flatpak info application_id
14. 显示应用程序历史版本 #
flatpak info -h application_id
15. 查看应用程序权限 #
flatpak info --show-permissions application_id
16. 覆盖应用程序权限 #
flatpak override --socket=wayland --nosocket=x11 application_id
17. 重置应用程序权限 #
flatpak override --reset application_id
18. 列出正在运行的 Flatpak 实例 #
flatpak ps
19. 终止正在运行的 Flatpak 实例 #
flatpak kill application_id
20. 修复 Flatpak 安装 #
flatpak repair
高级用法 #
1. 安装特定版本的应用程序 #
flatpak install flathub application_id/branch
例如:
flatpak install flathub org.mozilla.firefox/beta
2. 从本地文件安装应用程序 #
flatpak install --bundle application.flatpak
3. 导出应用程序到 USB 驱动器 #
flatpak create-usb /path/to/usb application_id
4. 从 USB 驱动器安装应用程序 #
flatpak install --sideload-repo=/path/to/usb application_id
5. 进入应用程序的命名空间 #
flatpak enter application_id command
例如:
flatpak enter org.mozilla.firefox bash
6. 运行应用程序的特定命令 #
flatpak run --command=command application_id
例如:
flatpak run --command=bash org.mozilla.firefox
7. 设置应用程序环境变量 #
flatpak run --env=VAR=VALUE application_id
例如:
flatpak run --env=MOZ_ENABLE_WAYLAND=1 org.mozilla.firefox
8. 允许应用程序访问特定目录 #
flatpak override --filesystem=/path/to/directory application_id
9. 允许应用程序访问设备 #
flatpak override --device=all application_id
10. 允许应用程序访问系统总线 #
flatpak override --system-talk-name=org.freedesktop.login1 application_id
11. 导出文件到应用程序 #
flatpak document-export --app=application_id /path/to/file
12. 列出导出的文档 #
flatpak documents
13. 取消导出文件 #
flatpak document-unexport document_id
14. 构建 Flatpak 应用程序 #
# 初始化构建目录
flatpak build-init build-dir application_id org.freedesktop.Platform org.freedesktop.Sdk 21.08
# 在构建目录中构建
flatpak build build-dir ./configure --prefix=/app
flatpak build build-dir make
flatpak build build-dir make install
# 完成构建
flatpak build-finish build-dir --socket=x11 --share=network
# 导出到仓库
flatpak build-export repo build-dir
15. 创建 Flatpak 包 #
flatpak build-bundle repo application.flatpak application_id
Flatpak 权限 #
Flatpak 使用沙盒隔离应用程序,但可以通过权限允许访问系统资源:
共享选项 #
选项 | 描述 |
---|---|
--share=network |
允许网络访问 |
--share=ipc |
允许进程间通信 |
套接字选项 #
选项 | 描述 |
---|---|
--socket=x11 |
允许 X11 访问 |
--socket=wayland |
允许 Wayland 访问 |
--socket=pulseaudio |
允许音频访问 |
--socket=session-bus |
允许会话 D-Bus 访问 |
--socket=system-bus |
允许系统 D-Bus 访问 |
设备选项 #
选项 | 描述 |
---|---|
--device=dri |
允许 GPU 访问 |
--device=kvm |
允许 KVM 访问 |
--device=all |
允许所有设备访问 |
文件系统选项 #
选项 | 描述 |
---|---|
--filesystem=home |
允许访问用户主目录 |
--filesystem=host |
允许访问整个主机文件系统 |
--filesystem=/path |
允许访问特定路径 |
--filesystem=xdg-download |
允许访问下载目录 |
特性选项 #
选项 | 描述 |
---|---|
--allow=multiarch |
允许多架构 |
--allow=devel |
允许开发工具 |
--allow=bluetooth |
允许蓝牙访问 |
Flatpak 目录结构 #
/var/lib/flatpak
:系统级 Flatpak 安装目录~/.local/share/flatpak
:用户级 Flatpak 安装目录~/.var/app/
:应用程序数据目录
与其他包管理系统的比较 #
特性 | Flatpak | Snap | AppImage | 传统包管理器 |
---|---|---|---|---|
沙盒隔离 | 是 | 是 | 有限 | 否 |
跨发行版兼容性 | 高 | 中 | 高 | 低 |
版本控制 | 是 | 是 | 否 | 有限 |
运行时共享 | 是 | 有限 | 否 | 是 |
存储效率 | 中 | 低 | 低 | 高 |
自动更新 | 是 | 是 | 否 | 有限 |
离线安装 | 是 | 有限 | 是 | 是 |
权限控制 | 细粒度 | 细粒度 | 有限 | 无 |
提示 #
- 使用
flatpak list --app
可以只列出应用程序,不显示运行时 - 使用
flatpak list --runtime
可以只列出运行时 - 使用
flatpak update --appstream
可以更新应用程序元数据 - 使用
flatpak remote-ls --updates
可以查看可用更新 - 使用
flatpak history
可以查看 Flatpak 操作历史 - 使用
flatpak run --env=FLATPAK_DEBUG=all application_id
可以启用调试输出 - 应用程序数据存储在
~/.var/app/application_id
目录中 - 使用
flatpak override --reset
可以重置所有应用程序权限 - 使用
flatpak remote-modify --prio=1 flathub
可以更改仓库优先级 - 使用
flatpak --gl-drivers
可以查看系统支持的 GL 驱动程序 - 使用
flatpak --installations
可以查看系统中的 Flatpak 安装位置 - 使用
flatpak remote-info flathub application_id
可以查看远程应用程序信息 - 使用
flatpak update --no-related
可以只更新应用程序,不更新相关运行时 - 使用
flatpak list --columns=all
可以查看所有可用的列信息 - 使用
flatpak permission-reset application_id
可以重置应用程序的权限