列出已安装的软件包
只列出App:
1 | flatpak list |
也可以:
1 | flatpak list --app |
只列出Runtime:
1 | flatpak list --runtime |
列出System App:
1 | flatpak list --system |
列出User Runtime:
1 | flatpak list --user --runtime |
卸载软件包
卸载特定软件包:
1 | flatpak uninstall <ID> |
卸载所有无用(useless)的运行时和扩展(相当于 apt-get autoremove
):
1 | flatpak uninstall --unused |
升级软件包
升级所有已安装软件包:
1 | flatpak update |
升级所有User范围内的软件包:
1 | flatpak update --user |
升级某个特定的软件包:
1 | flatpak update <ID> |
搜索软件包
类似apt search
:
1 | flatpak search <keyword> |
关键字可以是ID内出现的字符串(与ID相关),也可能是软件包描述内出现的字符串(与描述有关);
在某一个源内搜索软件包:
1 | # 找带关键字的所有软件包 -> grep过滤出特定的源 |
安装软件包
在不知道软件包的ID时,可以直接使用关键字,flatpak会查找所有匹配的项并询问要安装哪个:
1 | flatpak install <keyword> |
知道软件包的ID时,可根据ID直接安装:
1 | flatpak install <ID> |
知道软件包源和软件包ID时,可安装指定源内的某软件包:
1 | flatpak install <repo_name> <ID> |
- 控制安装软件的范围:加
--system
或--user
- 控制安装软件的版本(即安装某个旧版本而不是最新版):使用ID三元组
- flatpak可自动检测当前系统的架构,三元组可简写为二元组,例如:
org.blender.Blender/x86_64/stable
->org.blender.Blender//stable
- flatpak可自动检测当前系统的架构,三元组可简写为二元组,例如:
有些情况下,软件包所在的软件包源(Repo)系统中并没有添加(比如第三方源,或者本地源),此时若软件包提供者提供了flatpakref文件,软件包可以在不添加源的情况下安装;
1 | flatpak install <flatpakref_url> |
修复软件包
软件包的文件丢失或出错,可以联网快速修复:
1 | flatpak repair |
修复操作包括校验安装的所有软件包、重新下载安装文件缺失或出错的软件包、删除没被任何ostree commit引用的文件,等。
可以使用--system
和--user
指定修复的范围。
查询flatpak操作历史
会列出flatpak的拉取(pull)、部署(depoly)、卸载(uninstall)等动作的历史记录;
1 | flatpak history |
查询软件包的详细信息
需要是已安装的软件包的ID;
1 | flatpak info <ID> |
会给出类似下面的输出(LANG=en-US.UTF-8
):
1 | Blender - Free and open source 3D creation suite |
查询哪些软件包正在运行
需要以和运行软件时相同的用户身份进行查询(查询userA正在运行的软件包就su userA
);
类似
docker ps
1 | flatpak ps |
有时只需要软件包ID或者是只需要实例ID,可以使用参数--columns=<column_name>
进行输出限定;column_name
是输出列的英文名称;
1 | # 只看实例ID列 |
强制退出正在运行的软件包
与kill
不同,不能用于发送信号,只能用于强制停止软件包运行;
类似
docker stop
1 | flatpak kill <ID> |
使用命令行运行软件包
有时需要对软件包进行这些操作:
- 查看软件包对stdout的输出(log等);
- 给软件包增加启动参数(例如给Discord软件包增加
--proxy-server=<url>
使Discord通过代理连接服务器); - 修改、增加或删除软件包中的环境变量;
- 强制使软件包使用某个运行时;
- 修改软件包的入口点(使用自定义的软件包启动命令);
- 临时赋予软件包某些权限,如允许访问某些文件系统(路径等)、允许访问特定设备(共享内存等)……
类似
docker run
直接运行:
1 | flatpak run <ID> |
增加启动参数:
1 | flatpak run <ID> <params> |
其他常用的命令参数,参数需要放到软件包ID的前面:
- 环境变量
- 修改或增加:
--env=<var_name>=<var_value>
- 删除:
--unset-env=<var_name>
- 修改或增加:
- 入口点
- 修改运行软件包时执行什么命令:
--command=<command>
- 修改运行软件包时执行什么命令:
- 强制指定运行时(需要ID或ID三元组)
--runtime=<ID>
- 临时修改权限相关设置
- 文件系统:
--filesystem
,--nofilesystem
- 规则:
--add-policy
,--remove-policy
- 设备:
--device
,--nodevice
- Socket:
--socket
,--nosocket
- ……
- 文件系统:
- 其他选项可参照官方文档了解
进入正在运行的软件包的环境
flatpak的软件包运行在相对独立的环境中(类似于容器),因此只能通过命令进入正在运行中的软件包的环境;需要正在运行中的软件包的实例ID;
类似
docker exec
1 | flatpak enter <instance_id> <command> |
软件包的权限
要查看某个软件包获取了哪些权限:
1 | flatpak permission-show <ID> |
修改软件包的权限:不推荐直接使用命令行修改,可以使用软件包 Flatseal
若软件包出现权限问题,可尝试重置软件包权限解决:
1 | flatpak permission-reset <ID> |
软件包源
与直接编辑配置文件增加/删除软件源不同,软件包源是通过flatpak命令行增删和管理的;
查看当前已有的源:
1 | # 会显示源的名称(Repo name)和源的选项(Options) |
删除某个源:
1 | flatpak remote-delete <repo_name> |
添加某个源:软件包源的维护者会提供源的描述文件(.flatpakrepo
),而添加源时需要这个描述文件的位置;
1 | flatpak remote-add <repo_name> <flatpakrepo_url> |
其他常用的命令参数
- 指定作用域:
--user
,--system
- 关闭GPG签名校验,测试时非常好用:
--no-gpg-verify
- 本地导入源的GPG密钥:
--gpg-import=<gpg_file_url>
- ……
- 其他选项可参照官方文档了解
添加源时没有使用命令行参数设置选项,可在以后使用命令行修改;
1 | flatpak remote-modify <repo_name> |
软件包源内的软件包
查看某个软件包源内包含的所有软件包:
1 | flatpak remote-ls <repo_name> |
查看某软件包源内某个软件包的具体信息:
1 | flatpak remote-info <repo_name> <ID> |