snap 命令 #
snap
是一个包管理系统,由 Canonical(Ubuntu 的开发公司)开发,用于安装和管理 snap 包。Snap 包是自包含的应用程序,包括其所有依赖项,可以在多种 Linux 发行版上运行,提供安全的沙盒环境和自动更新功能。
语法 #
snap <命令> [<选项>...]
常用命令 #
命令 | 描述 |
---|---|
install |
安装 snap 包 |
remove |
移除 snap 包 |
list |
列出已安装的 snap 包 |
find |
查找可用的 snap 包 |
info |
显示 snap 包的详细信息 |
refresh |
更新 snap 包 |
revert |
恢复到先前版本的 snap 包 |
enable |
启用已安装的 snap 包 |
disable |
禁用已安装的 snap 包 |
run |
运行 snap 包中的命令 |
services |
列出服务 |
start |
启动服务 |
stop |
停止服务 |
restart |
重启服务 |
logs |
显示服务日志 |
connections |
列出接口连接 |
connect |
连接接口 |
disconnect |
断开接口连接 |
interfaces |
列出接口 |
changes |
显示系统变更 |
tasks |
显示变更的任务 |
abort |
中止变更 |
watch |
观察变更进度 |
set |
设置 snap 包配置选项 |
get |
获取 snap 包配置选项 |
unset |
取消设置 snap 包配置选项 |
version |
显示 snap 版本 |
help |
显示帮助信息 |
常用选项 #
选项 | 描述 |
---|---|
--help |
显示帮助信息 |
--version |
显示版本信息 |
--debug |
显示调试信息 |
--devmode |
以开发模式安装 snap 包 |
--jailmode |
强制使用严格的安全策略 |
--classic |
以经典模式安装 snap 包(不受限制) |
--dangerous |
安装未签名的 snap 包 |
--edge |
安装 edge 通道的 snap 包 |
--beta |
安装 beta 通道的 snap 包 |
--candidate |
安装 candidate 通道的 snap 包 |
--stable |
安装 stable 通道的 snap 包(默认) |
--revision=<修订版本> |
安装特定修订版本的 snap 包 |
--channel=<通道> |
指定安装通道 |
--purge |
完全移除 snap 包及其数据 |
--no-wait |
不等待操作完成 |
常见用法 #
1. 安装 snap 包 #
snap install package_name
例如:
snap install vlc
2. 安装特定通道的 snap 包 #
snap install package_name --channel=channel_name
例如:
snap install firefox --channel=beta
3. 以经典模式安装 snap 包 #
snap install package_name --classic
例如:
snap install code --classic
4. 移除 snap 包 #
snap remove package_name
5. 完全移除 snap 包及其数据 #
snap remove package_name --purge
6. 列出已安装的 snap 包 #
snap list
7. 搜索 snap 包 #
snap find keyword
例如:
snap find browser
8. 显示 snap 包信息 #
snap info package_name
9. 更新特定 snap 包 #
snap refresh package_name
10. 更新所有 snap 包 #
snap refresh
11. 切换 snap 包通道 #
snap refresh package_name --channel=channel_name
例如:
snap refresh firefox --channel=stable
12. 恢复到先前版本的 snap 包 #
snap revert package_name
13. 禁用 snap 包 #
snap disable package_name
14. 启用 snap 包 #
snap enable package_name
15. 列出 snap 服务 #
snap services
16. 启动 snap 服务 #
snap start package_name.service_name
17. 停止 snap 服务 #
snap stop package_name.service_name
18. 重启 snap 服务 #
snap restart package_name.service_name
19. 查看 snap 服务日志 #
snap logs package_name.service_name
20. 列出接口连接 #
snap connections
高级用法 #
1. 接口管理 #
Snap 使用接口系统来控制应用程序对系统资源的访问。
# 列出所有接口
snap interfaces
# 连接接口
snap connect package_name:interface_plug some_interface
# 断开接口连接
snap disconnect package_name:interface_plug
例如:
snap connect vlc:removable-media
2. 配置管理 #
# 设置配置选项
snap set package_name key=value
# 获取配置选项
snap get package_name key
# 取消设置配置选项
snap unset package_name key
例如:
snap set system proxy.http="http://proxy.example.com:3128"
3. 查看变更 #
# 列出所有变更
snap changes
# 查看特定变更的详细信息
snap change change_id
# 中止变更
snap abort change_id
# 观察变更进度
snap watch change_id
4. 安装本地 snap 包 #
snap install --dangerous /path/to/package.snap
5. 安装开发模式的 snap 包 #
snap install package_name --devmode
6. 查看 snap 包的修订版本 #
snap list --all package_name
7. 切换到特定修订版本 #
snap refresh package_name --revision=revision_number
8. 运行 snap 包中的命令 #
snap run package_name.command
9. 查看 snap 系统选项 #
snap get system
10. 设置系统代理 #
snap set system proxy.http="http://proxy.example.com:3128"
snap set system proxy.https="http://proxy.example.com:3128"
11. 管理自动更新 #
# 禁用自动更新
snap set system refresh.timer=disabled
# 设置特定时间更新
snap set system refresh.timer="mon,tue,wed,thu,fri,sat,sun,2:00-8:00"
# 查看当前更新设置
snap get system refresh
12. 查看 snap 包的跟踪信息 #
snap info --verbose package_name
13. 安装多个 snap 包 #
snap install package1 package2 package3
14. 查看 snap 包的安装大小 #
snap list --size
15. 查看 snap 包的路径 #
snap run --shell package_name
Snap 通道 #
Snap 使用通道系统来管理不同稳定性级别的版本:
stable
:默认通道,稳定版本candidate
:候选版本,即将成为稳定版本beta
:测试版本,可能有一些问题edge
:最新开发版本,可能不稳定
通道可以进一步细分为特定的版本轨道,例如:2.0/stable
、2.0/beta
等。
Snap 目录结构 #
/snap
:snap 包安装目录/var/lib/snapd
:snapd 数据目录/var/snap
:snap 包数据目录/etc/snap
:snap 配置目录/run/snapd.socket
:snapd API 套接字
与其他包管理系统的比较 #
特性 | Snap | APT/DEB | Flatpak | AppImage |
---|---|---|---|---|
自包含 | 是 | 否 | 是 | 是 |
沙盒隔离 | 是 | 否 | 是 | 有限 |
自动更新 | 是 | 否 | 是 | 否 |
回滚支持 | 是 | 有限 | 是 | 否 |
多发行版支持 | 是 | 有限 | 是 | 是 |
存储空间效率 | 低 | 高 | 中 | 低 |
启动速度 | 中 | 高 | 中 | 高 |
系统集成 | 中 | 高 | 中 | 低 |
提示 #
- 使用
snap find
搜索应用程序时,可以使用--narrow
选项进行精确匹配 - 使用
snap refresh --list
可以查看有哪些包可以更新 - 使用
snap saved
可以查看系统中保存的 snap 包版本 - 如果 snap 包安装后无法启动,检查是否需要连接额外的接口
- 使用
snap run --shell package_name
可以在 snap 环境中打开 shell,便于调试 - 使用
snap download package_name
可以下载 snap 包而不安装 - 使用
snap set system refresh.hold="$(date --date=tomorrow +%Y-%m-%dT%H:%M:%S%:z)"
可以暂时禁用更新 - 使用
snap alias package_name.command alias_name
可以为 snap 命令创建别名 - 使用
snap unalias alias_name
可以移除别名 - 使用
snap install package_name --edge --devmode
可以安装最新的开发版本进行测试 - 使用
systemctl status snap.package_name.service_name
可以查看 snap 服务的详细状态 - 使用
snap version
可以查看 snap 和 snapd 的版本信息 - 使用
snap warnings
可以查看系统中的 snap 警告 - 使用
snap debug connectivity
可以测试与 snap 商店的连接 - 使用
snap debug timings
可以查看操作的执行时间