Linux apt-get 命令

更多资料下载,冲击月薪过万,一线经验工程师录制, 干货满满的嵌入式视频教程,请点击淘宝店:wanglitao.taobao.com

dpkg 和 apt-get 都是 Debian 及其衍生系统(如 Ubuntu)中用于管理软件包的工具,它们在功能、使用方式和处理依赖关系等方面存在一些区别:

  • dpkg:dpkg 是一个底层的软件包管理工具,主要用于安装、卸载、查询和管理本地的 .deb 软件包文件。它直接操作 .deb 包,不处理软件包之间的依赖关系。如果要安装的软件包依赖其他未安装的软件包,dpkg 不会自动安装这些依赖包,而是会提示依赖错误。
  • apt-get:apt-get 是一个高层的软件包管理工具,它基于 dpkg 构建,除了具备 dpkg 的基本功能外,还能自动处理软件包之间的依赖关系。apt-get 会从软件源(如 Debian 官方软件源、Ubuntu 软件源等)获取软件包的元数据信息,包括软件包的版本、依赖关系等,然后根据这些信息自动下载并安装所需的软件包及其依赖包。

dpkg 主要处理本地已有的 .deb 软件包文件,这些文件可以是从网络下载的,也可以是其他途径获得的。它不直接从软件源获取软件包,因此在安装软件包时,需要用户手动确保所有依赖的软件包都已经存在于本地并正确安装。

apt-get 主要从配置好的软件源中获取软件包及其元数据。软件源通常是一个服务器,存储了大量的软件包及其相关信息。apt-get 会定期更新本地的软件源缓存(使用 apt-get update 命令),以便获取最新的软件包列表和版本信息。在安装软件包时,apt-get 会根据软件源缓存中的信息,自动从软件源下载并安装所需的软件包。

常用的apt-get命令

# apt-get install vim                安装vim
# apt-get remove  vim                卸载vim
# apt-get purge  vim                卸载vim及配置文件
# apt-get update                    更新软件缓存
# apt-get upgrade                    升级已安装的软件包
# apt-get dist-upgrade                升级已安装的软件包及其依赖

apt-get remove 和 purge 的区别

当你使用 apt-get remove 卸载软件包时,系统只会移除软件运行所需的二进制文件、库文件等主要程序组件。软件包在 /etc 目录下的配置文件(通常是系统全局配置文件)以及用户主目录下的相关配置文件都会被保留。
这意味着,如果你之后重新安装同一个软件包,之前的配置信息依然存在,软件可能会沿用之前的配置继续运行。

apt-get purge 会进行更彻底的卸载操作。它会将软件包的主要程序文件和与之关联的所有配置文件一并删除。
这样做的好处是,当你不再需要某个软件,并且希望完全清除该软件在系统中留下的所有痕迹时,可以使用此命令。

apt-get upgrade 和 dist-upgrade 的区别

apt-get upgrade:会将已安装的软件包升级到软件源中可用的最新版本,但它在升级过程中不会自动处理软件包之间的依赖关系变化。如果升级某个软件包会导致依赖关系冲突(例如,新的软件包版本不再兼容某些已安装的软件包),upgrade 命令会停止升级,并提示用户存在依赖问题,不会对系统进行任何更改。例如,系统中已安装软件包 A 和 B,A 依赖于 B 的某个特定版本。当 B 有新版本发布,但该新版本与 A 不兼容时,apt-get upgrade 不会升级 B,以避免破坏 A 的正常运行。

apt-get dist-upgrade:在升级软件包时会智能地处理依赖关系的变化。它会根据软件源中软件包的依赖信息,自动安装、卸载或升级其他相关软件包,以满足升级过程中软件包之间的依赖需求。这意味着 dist-upgrade 可能会对系统进行更广泛的更改,包括卸载不再需要的软件包或安装新的软件包来解决依赖冲突。继续以上述例子为例,apt-get dist-upgrade 可能会尝试升级 A 到一个与 B 的新版本兼容的版本,或者卸载 A 以允许 B 升级到最新版本,具体取决于软件源中软件包的依赖关系和可用版本。

从系统更新程度上看:

  • upgrade 命令相对保守,它只会对已安装的软件包进行简单的版本升级,尽量保持系统的现有配置和软件包组合不变。因此,upgrade 命令对系统的更改较小,通常用于常规的软件包更新,以获取安全补丁和功能改进,而不会引入较大的系统变化。
  • dist-upgrade 命令更为激进,它会根据软件包的依赖关系对系统进行更深入的调整。这可能包括卸载一些不再被其他软件包依赖的旧版本软件包,或者安装新的软件包来满足升级后的依赖需求。因此,dist-upgrade 命令可能会对系统的软件包组合和配置产生较大的影响,尤其是在进行系统版本升级(如从 Ubuntu 20.04 升级到 22.04)时,通常需要使用 dist-upgrade 命令来处理复杂的依赖关系变化。

从使用场景上看:

  • upgrade: 适用于日常的软件包更新,用户希望在不改变系统整体结构和依赖关系的情况下,获取软件包的最新版本。例如,定期运行 apt-get upgrade 可以保持系统中的软件包处于最新状态,以获得安全更新和性能改进,而不用担心引入潜在的依赖问题。
  • dist-upgrade: 适用于进行系统版本升级或在软件包依赖关系发生较大变化时进行升级。例如,当系统发布了一个新的主要版本,并且用户希望将系统升级到该版本时,dist-upgrade 命令可以自动处理升级过程中涉及的所有软件包依赖关系变化,确保系统能够顺利升级到新版本。

apt 和 apt-get 的区别

apt 实际上是在 apt-get 等相关工具基础上发展而来的,它们在功能和使用上有一些区别:

  • apt-get:是一个较为传统且功能全面的软件包管理工具,它提供了一系列细粒度的命令选项,可用于软件包的安装、升级、删除、查询等操作。不过其功能分散在多个相关工具中,例如 apt-cache 用于软件包信息查询,apt-config 用于配置管理。
  • apt:对 apt-get 以及 apt-cache、apt-config 等工具的常用功能进行了整合和简化,提供了一套更加简洁、易用的命令接口。它涵盖了软件包管理的主要操作,基本能满足日常使用需求。

使用建议:

  • apt-get:如果你是经验丰富的系统管理员,对软件包管理有深入的了解,并且需要进行一些复杂的、特定的软件包管理操作,例如精确控制依赖包的安装、处理复杂的软件包配置等,那么 apt-get 更适合你。
  • 对于普通用户或者初学者来说,apt 是更好的选择。它的操作简单易懂,输出信息友好,能够让用户轻松地完成日常的软件包管理任务,如安装、升级和删除软件包等。
《Linux三剑客》视频教程,从零开始快速掌握Linux开发常用的工具:Git、Makefile、vim、autotools、debug,免费赠送C语言视频教程,C语言项目实战:学生成绩管理系统。详情请点击淘宝链接:Linux三剑客