一、背景知识

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

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


五、常见对比示例

操作 apt-get 命令 apt 命令
更新索引 sudo apt-get update sudo apt update
安装 nginx sudo apt-get install nginx sudo apt install nginx
卸载包 sudo apt-get remove nginx sudo apt remove nginx
查看包信息 apt-cache show nginx apt show nginx
搜索包 apt-cache search nginx apt 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 / .deb snap 包(Snapcraft)
包格式 .deb .snap
是否自带依赖 ❌ 不自带,依赖系统库 ✅ 自带依赖(更独立)
沙箱隔离 ❌ 无(完全系统级集成) ✅ 有(类似 App 容器)
更新方式 手动或半自动更新 自动后台更新
跨发行版支持 ❌ 通常只适配 Debian/Ubuntu ✅ 可跨 Debian、Arch、Fedora、OpenSUSE 等
启动速度 相对慢一些(因初始化沙箱环境)
文件位置 /usr/bin 等标准位置 /snap//var/snap/ 等 snap 专用路径
包管理器 aptdpkg snap 命令

📦 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 与其他新型包管理器的比较

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

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


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

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

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

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

🔚 总结一句话:

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