snap命令

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/stable2.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可以查看操作的执行时间