一、背景知识

在基于 Debian 的 Linux 发行版中(如 Ubuntu、Kali、Linux Mint 等),软件的安装、更新和卸载主要通过 包管理器(Package Manager) 来完成。这个包管理器使用 .deb 格式的软件包。

  • Debian 以前使用的主要工具是:dpkgapt-get
  • 后来为了简化用户体验,引入了 apt 命令,它是 apt-getapt-cache 的一个更友好封装。

二、apt-get 是什么?

apt-get 是 Debian 系统中的一个 底层命令行工具,用于管理软件包(安装、卸载、更新等),属于 APT(Advanced Package Tool)系统的一部分。

apt-get 的主要功能:

命令作用
apt-get update更新软件包索引(不会升级软件)
apt-get upgrade升级已安装的包
apt-get install <package>安装包
apt-get remove <package>卸载包(保留配置)
apt-get purge <package>卸载包及配置
apt-get autoremove自动移除不再需要的包
apt-get clean清除下载的软件包缓存
apt-get dist-upgrade升级系统(可处理依赖变动)

三、apt 是什么?

apt 是一个在 Ubuntu 16.04(2016年)后加入的命令行工具,目标是替代 apt-getapt-cache,提供更人性化的语法和输出格式

它并不是取代 apt-get,而是对常见命令进行了封装,是一种“更方便的接口”。

apt 的主要命令:

命令作用
apt update更新软件索引
apt upgrade升级包
apt install <package>安装包
apt remove <package>卸载包(保留配置)
apt purge <package>卸载包和配置文件
apt autoremove自动删除多余包
apt list列出包信息
apt search <keyword>搜索软件包
apt show <package>显示软件包详细信息
apt edit-sources编辑源列表

四、两者的区别总结

对比点apt-getapt
出现时间较早,经典命令2016年起,为用户设计
定位低层工具,脚本友好面向用户,简洁高效
输出格式原始,少美化更美观、结构清晰
命令数量更多,复杂精简,覆盖常用操作
脚本中使用✅ 推荐❌ 不推荐(可能不稳定)

✅:适合写 shell 脚本 ❌:不建议在生产脚本中使用 apt(未来可能变更)


五、常见对比示例

操作apt-get 命令apt 命令
更新索引sudo apt-get updatesudo apt update
安装 nginxsudo apt-get install nginxsudo apt install nginx
卸载包sudo apt-get remove nginxsudo apt remove nginx
查看包信息apt-cache show nginxapt show nginx
搜索包apt-cache search nginxapt search nginx

六、注意事项和最佳实践

  • 一般用户(日常使用、排查问题)推荐使用 apt,更加友好。
  • 写脚本或自动化部署,推荐用 apt-get,兼容性更好。
  • apt-get dist-upgradeapt full-upgrade,但 apt 推荐使用 full-upgrade
  • 使用 apt update 之后,一定要执行 apt upgradeapt full-upgrade,才能真正升级已安装的软件。

七、补充:dpkg 的位置

  • dpkg 是 Debian 的最底层安装工具,不会自动处理依赖。
  • 通常你使用 .deb 文件手动安装时会用到它:
1
2
3
sudo dpkg -i xxx.deb      # 安装
sudo dpkg -r xxx          # 删除
sudo dpkg -l              # 列出安装包

如果依赖出错,再用:

1
sudo apt-get install -f   # 修复依赖

八、常见问题

1. 为什么要先 apt update 才能 install

因为系统需要获取最新的软件包列表,否则可能找不到包或安装的是旧版本。

2. 执行 apt upgradeapt full-upgrade 有什么区别?

  • upgrade:只升级已安装包,不移除旧依赖。
  • full-upgrade:升级包 + 移除或替换依赖,风险稍高,但升级彻底。

九、小练习建议

你可以试着执行以下命令熟悉操作(使用前加 sudo):

1
2
3
4
5
6
7
apt update
apt search curl
apt install curl
apt show curl
apt remove curl
apt autoremove
apt clean

snap是什么呢?


🧠 一句话定义:

Snap 是一种由 Canonical(Ubuntu 背后公司)开发的软件包格式和包管理系统,用于实现跨发行版、沙箱隔离、自带依赖的软件部署方式。

简单说,它是一种比传统 apt/.deb 更“现代化”的软件安装方式。


🧱 Snap 和 apt 的核心区别

对比项apt / .debsnap 包(Snapcraft)
包格式.deb.snap
是否自带依赖❌ 不自带,依赖系统库✅ 自带依赖(更独立)
沙箱隔离❌ 无(完全系统级集成)✅ 有(类似 App 容器)
更新方式手动或半自动更新自动后台更新
跨发行版支持❌ 通常只适配 Debian/Ubuntu✅ 可跨 Debian、Arch、Fedora、OpenSUSE 等
启动速度相对慢一些(因初始化沙箱环境)
文件位置/usr/bin 等标准位置/snap//var/snap/ 等 snap 专用路径
包管理器aptdpkgsnap 命令

📦 Snap 应用的特点

  1. 打包完整:Snap 包是“自带一切”的,开发者把程序和它的所有依赖打包一起发布。
  2. 沙箱隔离:Snap 应用在沙箱中运行,不会污染系统环境,类似手机 App。
  3. 自动更新:Snap 后台每隔一段时间会自动检查并升级应用。
  4. 统一打包平台:只需打一次包,理论上可在各种 Linux 上运行。

🛠 常见 Snap 命令

1
2
3
4
5
snap find <关键词>        # 搜索 snap 包
snap install <包名>       # 安装 snap 包
snap list                 # 列出已安装的 snap 应用
snap remove <包名>        # 卸载 snap 包
snap refresh              # 手动刷新所有 snap 包(即更新)

📌 示例:用 Snap 安装 Chromium 浏览器

1
sudo snap install chromium

这就安装了一个独立、可更新、与系统隔离的 Chromium 浏览器。


🧩 Snap 与其他新型包管理器的比较

包管理系统出品方代表发行版说明
SnapCanonicalUbuntuUbuntu 官方主推,支持沙箱、自动更新
FlatpakFedora 社区FedoraGNOME 社区主推,强调桌面隔离
AppImage社区驱动通用不安装,单文件运行,非常轻便

❗ 有争议:不少开发者批评 Snap 启动慢不遵守 FHS 目录结构默认启用自动更新不可关闭


✅ 什么时候使用 Snap 比 apt 更合适?

  • 你需要最新版本,但官方仓库版本太老;
  • 软件依赖复杂,你不想自己处理依赖问题;
  • 你用的不是 Ubuntu,也能用 Snap 安装 Ubuntu 提供的软件;
  • 你希望沙箱隔离系统,减少污染风险;

🚫 什么时候不建议使用 Snap?

  • 你关心性能和启动速度;
  • 你需要软件完全集成进系统(如系统服务);
  • 你在制作最小 Linux 镜像(Snap 会带来较大体积);

🔚 总结一句话:

Snap 就像 Linux 世界的 App Store:简单、可移植、沙箱、安全,但有时也比较重。