之前一直用的是 apt , 最近查包时发现了 snap, 做如下整理对比
sudo snap install cmake # version 4.0.3, or
sudo apt install cmake # version 3.22.1-1ubuntu1.22.04.2
APT (Advanced Packaging Tool)
基本概念
APT 是 Debian/Ubuntu 系统的传统包管理系统,用于管理 .deb
格式的软件包。
特点
- 系统集成度高:软件包与系统深度集成
- 稳定性优先:软件版本通常较旧但经过充分测试
- 依赖管理:自动处理软件依赖关系
- 集中配置:使用
/etc/apt/sources.list
定义软件源 - 特权要求:需要 root 权限安装系统级软件
常用命令
sudo apt update 更新软件包列表
sudo apt install <包名> 安装软件包
sudo apt remove <包名> 移除软件包
sudo apt upgrade 升级所有可升级的软件包
优点
- 与系统其他部分无缝协作
- 依赖关系处理完善
- 系统更新统一管理
缺点
- 软件版本通常不是最新的
- 软件选择相对有限
Snap
基本概念
Snap 是 Canonical 开发的通用 Linux 包管理系统,使用 .snap
格式的容器化软件包。
特点
- 沙箱环境:应用在隔离环境中运行
- 自动更新:默认启用自动后台更新
- 跨发行版:同一 snap 包可在不同 Linux 发行版运行
- 自包含:包含所有依赖项(除核心系统库)
- 版本选择:支持安装特定版本或通道
常用命令
sudo snap install <包名> 安装 snap 包
sudo snap remove <包名> 移除 snap 包
sudo snap refresh <包名> 更新特定
snap 包 sudo snap list 列出已安装的 snap 包
优点
- 软件版本通常较新
- 安装过程简单统一
- 更好的安全隔离
- 支持回滚到之前版本
缺点
- 占用更多磁盘空间
- 启动时间可能稍长
- 某些应用在沙箱中可能功能受限
主要区别对比
特性 | APT | Snap |
---|---|---|
包格式 | .deb | .snap |
依赖处理 | 系统共享库 | 自包含(除核心库) |
更新策略 | 手动/系统统一更新 | 自动独立更新 |
隔离性 | 无 | 沙箱隔离 |
版本新鲜度 | 较旧 | 较新 |
跨发行版 | 仅限Debian系 | 支持多数Linux |
磁盘占用 | 较小 | 较大 |
启动速度 | 较快 | 可能稍慢 |
使用建议
- 系统关键组件:优先使用 APT
- 桌面应用:可考虑使用 Snap 获取新版
- 开发工具:根据版本需求选择
- 服务器环境:通常推荐 APT 保持稳定
两种工具可以共存,但建议了解每个安装的软件来自哪个系统(使用 apt list --installed
和 snap list
查看)
我创建了知识星球,一起学习,交个朋友。