apt 和 apt-get有什么区别? Linux包管理解密

你是否好奇,为什么 Debian 系 Linux 发行版同时拥有aptapt-get这两个雷同的命令?虽然这两者在一定程度上可以相互平替,但又各有千秋。接下来,本文就来揭开它们背后的秘密!

Debian 包管理系统

软件安装的幕后管家

在 Linux 世界中,每个发行版都有自己的包管理系统,用于安装、更新和卸载软件。Debian 系发行版,包括 Ubuntu、Linux Mint 和 elementary OS 等,采用了 Debian 包管理系统,使用.deb文件来管理软件包。

你可以把.deb文件想象成一个包裹,里面封装着软件的所有部件,包括可执行文件、手册 (man page)、库文件等等。安装软件就像拆包裹,把里面的东西拿出来,再放到 Linux 的正确位置。

当然,以上只是一个简单的比喻,实际过程还涉及处理操作系统和桌面环境的交互,确保软件能被正确识别,图标能出现在菜单里等。

apt-getapt这两个命令都能完成这些任务。那么问题来了,为什么还需要两个功能类似的命令呢?

Debian 包管理层级结构

在 Debian 系发行版中,软件安装的实际工作由dpkg命令完成,它负责处理软件包的安装和卸载。dpkg是一系列命令的集合,包括dpkg-split、dpkg-trigger和dpkg-divert,这些命令会被更高级的工具调用,比如 APT(Advanced Packaging Tool)。

APT 负责管理软件包的安装、更新和移除。它也包含了一系列工具,包括apt-getapt-cacheapt等。

你可以aptapt-get理解为dpkg的前端。

  • dpkg:幕后英雄

dpkg是 Debian 包管理系统的核心,是一个底层工具,用于直接操作.deb文件。你可以把它想象成一个搬运工,负责把软件包里的「内容」搬到电脑里。但是,它不处理依赖关系,这项工作交由aptapt-get来完成。

  • apt-get:老牌工具

apt-get是一个比较「古早」的命令行工具,用于与包管理系统交互。它就像一个指挥官,告诉系统要安装、卸载或更新哪些软件。apt-get以稳定可靠著称,经常用于自动化任务,比如 Shell 脚本当中。

  • apt:更现选择

apt算是后起之秀,旨在提供更简洁易用的体验。它整合了apt-getapt-cache的功能,语法更简单,输出也更友好,比如带有进度条和颜色编码。它就像一个新一代管家,更智能、更易用。

apt 与 apt-get:有什么区别

虽然aptapt-get都可用于安装、删除和管理软件包,但存在一些关键区别:

  • 用户体验apt的输出更加现代友好,彩色输出和进度条让操作过程一目了然。而apt-get则保持着传统的纯文本输出,略显单调。

  • apt 命令进度条示例
  • 功能差异apt不仅包含了apt-get的所有功能,还新增了listsearch等实用命令,功能更加全面。脚本编写apt-get输出格式稳定,更适合用于编写脚本,实现自动化管理。

简单来说,apt更适合日常使用,而apt-get更受脚本开发者青睐。下表列出了两者的命令和功能说明,选择使用哪一个,取决于你的具体需求和个人喜好。

apt 命令 apt-get 命令 命令的功能
apt install apt-get install 安装软件包
apt remove apt-get remove 移除软件包
apt purge apt-get purge 移除软件包及配置文件
apt update apt-get update 刷新存储库索引
apt upgrade apt-get upgrade 升级所有可升级的软件包
apt autoremove apt-get autoremove 自动删除不需要的包
apt full-upgrade apt-get dist-upgrade 在升级软件包时自动处理依赖关系
apt search apt-cache search 搜索应用程序

当然,apt还有一些自己的命令:

新的 apt 命令 命令的功能
apt list 列出包含条件的包(已安装、可升级等)
apt edit-sources 编辑源列表

总而言之:

  • dpkg是幕后英雄,负责实际的安装工作。
  • apt-get提供了完整的dpkg接口,功能强大但略显繁琐。
  • apt是更友好、更易用的apt-get版本,功能略有精简。

aptapt-get不仅仅是 dpkg的接口,还能完dpkg 无法做到的事情,比如从软件库获取文件。选择使用哪一个,取决于你的具体需求和使用场景。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平