Ubuntu的apt、apt-get和apt-cache命令

原文:apt 和 apt-get 之间有什么区别?

https://aws.amazon.com/cn/compare/the-difference-between-apt-and-apt-get/

陈拓转载,2023/11/23,添加了举例。

apt apt-get 之间有什么区别?

apt 和 apt-get 都是命令行工具。您可以使用这两种工具来管理软件包,例如基于 Debian 的 Linux 服务器和服务器实例上的应用程序和库。由于 Linux 是开源的,因此您可以使用多个软件包选项对其进行自定义,以满足您的需求。基于 Debian 的 Linux 操作系统使用高级软件包工具(APT)来管理 Linux 软件包。apt 命令行工具为最终用户提供更高级别的用户界面,提供直观的命令、生成的行为和安全功能。相比之下,apt-get 命令是一个低级别接口,可以更紧密地与核心 Linux 进程通信。apt 命令是比 apt-get 更易于使用的软件包管理器。

apt apt-get 有什么相似之处?

apt 和 apt-get 都是基于 Debian 的 Linux 发行版(或发行版本,如 Debian、Ubuntu、Linux Mint 和基本操作系统)的包管理器工具。尽管 apt-get 和 apt 是系统默认工具,但也有一些类似的工具,如 aptitude 和 synaptic

接下来,我们将介绍 apt 和 apt-get 之间的相似之处。

接口

apt 命令行实用工具和 apt-get 命令行实用工具均可通过 Linux 命令行接口(CLI)访问。要使用 Linux CLI,请打开终端窗口或虚拟终端窗口。

文档

要获取 apt 实用程序和 apt-get 实用程序的官方概述,请在命令提示符下输入 apt 或 apt-get。这将为您提供最常见的 apt 命令和 apt-get 命令的列表。

例如,apt update 或 apt-get update 会更新来自官方存储库的可用软件包列表。apt 命令和 apt-get 命令后面还会列出一些选项。例如,apt update --quiet 将向终端提供 apt update 命令不太详细的打印输出。

请注意,如果您不是以管理员身份登录,则需要先将 sudo 命令添加到每个 apt 命令和 apt-get 命令中。例如,您可以输入 sudo apt-get update

使用案例

apt 和 apt-get 中最常见的任务是安装、更新和删除软件包。软件包可以是应用程序、库、实用程序和工具。

下表显示了两者的常用命令语法。

apt

apt-get

  • apt install <package_name>
  • apt remove <package_name>
  • apt purge <package_name>
  • apt upgrade <package_name>
  • apt update
  • apt-get install <package_name>
  • apt-get remove <package_name>
  • apt-get purge <package_name>
  • apt-get upgrade <package_name>
  • apt-get update

举例:

  • 更新本地源列表

sudo apt update

  • 安装软件包libglib2.0-dev

sudo apt install libglib2.0-dev

  • 查看安装情况

sudo apt policy libglib2.0-dev

  • 卸载软件包libglib2.0-dev

sudo apt remove libglib2.0-dev

  • 卸载软件包libglib2.0-dev并清除与其关联的文件

sudo apt purge libglib2.0-dev

查看卸载情况:

主要区别:apt 与 apt-get

apt 和 apt-get 之间的区别不仅在于 apt 是 apt-get 的较新版本。apt 命令被设计为对用户更加友好的 apt-get 替代方案,结合了多个包管理工具的功能,为用户提供便利。

接下来,我们将讨论 apt 和 apt-get 之间的其他区别。

发布日期

apt-get 于 1998 年在 Debian 2.0(Hamm)发行版中发布,而 apt 于 2014 年在 Debian 8(Jessie)发行版中发布。2014 年之后,apt 取代 apt-get 成为所有基于 Debian 的 Linux 发行版的默认软件包管理器工具。

搜索功能

使用 apt search <package_name> 命令按名称搜索软件包。此命令详细描述了包含所搜索的 package_name 的所有软件包。使用 apt-get 无法执行此操作。相反,您必须使用 apt-cache 命令。 

依赖关系解析

任何软件包通常都附带软件依赖项列表,例如正常运行所需的库或工具。在安装软件包之前,必须先安装所有依赖项。

apt 和 apt-get 都可以处理依赖关系解析,但是 apt 的性能要优越得多。它可以确定复杂的依赖关系链,在这些依赖关系链中按正确的顺序安装软件包,并推荐要安装的软件包。

文件系统上的包版本

默认情况下,apt upgrade 命令会在升级时删除系统上不再需要的已安装或可升级软件包的旧版本。

相比之下,apt-get upgrade 命令则不会执行此操作。这种效率使 apt upgrade 能够更好地释放系统内存。

将输出打印到终端

apt-get 和 apt 都可以将状态信息打印到终端,从而深入了解系统在输入命令后执行的操作。apt 命令为用户提供略微详细一些的信息,包括每个任务的进度条。

apt 如何取代 apt-get?

apt 工具现在是基于 Debian 的 Linux 发行版的默认软件包管理实用程序,已经取代了 apt-get 和 apt-cache。大多数 apt-get 命令在每个新的 apt 命令中的编写方式都相同。

但在过去,对于某些命令,必须将 apt-get 与 apt-cache 一起使用。下表显示了现在如何将这几个命令移植到 apt

apt-cache

apt-get

apt

apt-cache search

不支持

apt search

apt-cache show

不支持

apt show

apt-cache policy

不支持

apt policy

在任何现有 Linux 脚本中,您都无需将 apt-get 命令替换为 apt 命令。它们仍然可以按预期运行,并且仍然支持 apt-get。较早的 apt-get 命令的某些功能在 apt 中略有变化,因此在脚本中保留 apt-get 有助于确保正确操作。

除非项目或环境需要,否则普通 Linux 用户应该使用 apt 而不是 apt-get

举例:

  • 用apt-cache search命令在本地源列表中搜索libglib2.0-dev

sudo apt-cache search libglib2.0-dev

  • 用apt search命令在本地源列表中搜索libglib2.0-dev

sudo apt search libglib2.0-dev

比apt-cache search命令给出更多的信息。

  • 用apt-cache show命令从本地软件列表中显示libglib2.0-dev的详细信息

sudo apt-cache show libglib2.0-dev

  • 用apt show命令从本地软件列表中显示libglib2.0-dev的详细信息

sudo apt show libglib2.0-dev

  • 用显示apt-cache policy命令显示软件包libglib2.0-dev的安装状态和版本信息

sudo apt-cache policy libglib2.0-dev

安装libglib2.0-dev之前:

Installed: (none) 未安装。

安装libglib2.0-dev之后:

libglib2.0-dev:

  Installed: 2.64.6-1~ubuntu20.04.6 已经安装的版本

  Candidate: 2.64.6-1~ubuntu20.04.6 候选版本

  Version table: 版本列表

 *** 2.64.6-1~ubuntu20.04.6 500

        500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages

        500 http://archive.ubuntu.com/ubuntu focal-security/main amd64 Packages

        100 /var/lib/dpkg/status

     2.64.2-1~fakesync1 500

        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages

  • 用显示apt policy命令显示软件包libglib2.0-dev的安装状态和版本信息

sudo apt policy libglib2.0-dev

安装libglib2.0-dev之前:

安装libglib2.0-dev之后:

  • 用apt-cache madison命令显示软件包版本列表

sudo apt-cache madison libglib2.0-dev

  • 用apt list命令显示软件包版本列表

sudo apt list libglib2.0-dev

libglib2.0-dev安装之前:

libglib2.0-dev安装之后:

带–-installed选项:

sudo apt list libglib2.0-dev –installed

libglib2.0-dev安装之前:

libglib2.0-dev安装之后:

sudo apt list libglib2.0-dev --installed -a

差异摘要:apt 与 apt-get

类别

apt-get

apt

它是什么?

用于在基于 Debian 的 Linux 系统上管理软件包的 CLI 工具。

用于在基于 Debian 的 Linux 系统上管理软件包的 CLI 工具。

发布年份和 Debian 的初始发行版本

1998 年,Debian 2.0(Hamm)发行版。

2014 年,Debian 8(Jessie)发行版。

搜索功能

不可以。用户必须改用 apt-cache 包管理命令进行搜索。

可以。

依赖关系解析

解析简单依赖关系。

通过安装推荐软件解析复杂依赖关系。

文件系统上的包版本

使用 apt-get upgrade 时,旧版本的软件包会保留在文件系统上。

使用 apt upgrade 时,旧版本的软件包会从文件系统中删除。

操作的打印输出

向用户打印每个 apt-get 命令的基本输出,没有太多细节。

向用户打印每个 apt 命令的详细输出,以获取有关操作的更多信息,包括任务进度条。 

apt自己独有的命令

apt list

列出本地仓库中所有的软件包名

如果带上包名:

apt list [package name]

可以从本地仓库中查找指定的包名,支持通配符,举例:

apt list libglib2.0-dev -a

通配符的使用:

apt list libglib2.0*

如果包名后面带有[installed]表示该包已经安装。举例:

  • 列出所有已安装的包名

apt list --installed

  • 列出指定已安装的包名

sudo apt list libglib2.0* --installed

安装libglib2.0-dev之前:

安装libglib2.0-dev之后:

sudo apt list libglib2.0* --installed

  • 查看所有可升级的包

sudo apt list --upgradable

  • 查看可升级的指定包

sudo apt list libglib2.0-dev --upgradable

apt edit-sources

快速换源。

通常换源是通过手动编辑/etc/apt/sources.list来实现的。

用apt edit-sources命令可以帮助我们选择编辑器并自动打开sources.list进行编辑。举例,换阿里云源:

  • 先备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

  • 执行换源命令

sudo apt edit-sources

选择编辑器。我们选1. /bin/nano

将列表中所有的archive.ubuntu都改成mirrors.aliyun,保存,退出。

  • 更新源软件列表

因为源的位置变了,我们必须更新本地的源列表和当前的源一致:

sudo apt update

  • 更新软件包

升级系统中所有已安装的软件包:

sudo apt upgrade

升级指定的已安装的软件包:

sudo apt upgrade libglib2.0-dev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/427926.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三位数反转问题易被忽略的两大细节

【题目描述】 输入一个三位数&#xff0c;分离出它的百位、十位和个位&#xff0c;反转后输出。 【样例输入】 127 【样例输出】 721 这个问题并不难&#xff0c;只需要两步&#xff1a; ①将这个三位数分离成三个数字&#xff08;参见“整数的分离与合成”一文&#xff…

lv20 QT事件5

1 事件模型 2 事件处理 virtual void keyPressEvent(QKeyEvent *event) virtual void keyReleaseEvent(QKeyEvent *event) virtual void mouseDoubleClickEvent(QMouseEvent *event) virtual void mouseMoveEvent(QMouseEvent *event) virtual void mousePressEvent(QMou…

【大厂AI课学习笔记NO.59】(12)过拟合与欠拟合

拟合就是调整参数和模型&#xff0c;让结果无限接近真实值的过程。 我们先来了解个概念&#xff1a; 偏差-方差窘境&#xff08;bias-variance dilemma&#xff09;是机器学习中的一个重要概念&#xff0c;它涉及到模型选择时面临的权衡问题。 偏差&#xff08;Bias&#xf…

自建Redis蜜罐以捕获和分析潜在攻击

一、引言 随着网络攻击的日益频繁和复杂&#xff0c;传统的防御措施往往难以应对。蜜罐作为一种主动防御技术&#xff0c;通过模拟有价值的服务来吸引攻击者&#xff0c;从而收集和分析攻击数据&#xff0c;提高网络安全性。本文将介绍如何自建一个Redis蜜罐&#xff0c;以捕获…

转转测试环境docker化实践

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程&#xff0c;一周学完让你面试通过率提高90%&#xff01;&#xff08;自动化测试&#xff09; 测试环境对于任何一个软件公司来讲&#xff0c;都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几…

【开源】JAVA+Vue.js实现农家乐订餐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核心代码4.1 查询菜品类型4.2 查询菜品4.3 加购菜品4.4 新增菜品收藏4.5 新增菜品留言 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的农家乐订餐系统&#xff0c…

MS1030超声波流量高精度测量电路

产品简述 MS1030 是一款针对超声波流量高精度测量电路&#xff0c;它具有高 精度&#xff0c;高稳定性&#xff0c;高效率的特点。它的测量精度 15ps &#xff0c;测量范 围 500ns  4ms4MHz 。在第一波模式情况下&#xff0c;内部比较器的 offset 可编程范围为 127…

type.GetFields() 获取不到,改用type.DeclaredFields

StatisticQuery 类 private Dictionary<string, DateTime> GetTBHBDate(StatisticQuery model, string field){Dictionary<string, DateTime> dic new Dictionary<string, DateTime>();DateTime TB new DateTime();//同比开始日期 &#xff08;年&#xff…

计网面试题整理下

1. HTTP常见的状态码有哪些&#xff1f; 常见状态码&#xff1a; 200&#xff1a;服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。301 &#xff1a; (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时&am…

揭秘测试工程师的6大必备技能!你也常遇到这个问题吗?

作为一名Tester&#xff0c;无论是面试还是工作&#xff0c;我们都常常会遇到该问题&#xff0c;毕竟现在大部分接手的项目都是中小型的项目&#xff0c;很多又是生疏行业的系统&#xff0c;所以这个问题就会常常伴随我们&#xff0c;那么遇到这个问题该怎么办呢&#xff0c;现…

淘宝1688京东商品采集API接口系列,item_get-获得淘宝商品详情

请求示例&#xff0c;API接口接入Anzexi58 商品采集API接口系列 商品搜索API&#xff1a; 功能&#xff1a;根据关键词、分类、价格范围等条件搜索商品。参数&#xff1a;关键词、分类ID、价格范围、品牌等。返回&#xff1a;商品列表&#xff0c;包括商品ID、名称、价格、图片…

【C++练级之路】【Lv.10】【STL】priority_queue类和反向迭代器的模拟实现

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 一、仿函数1.1 仿函数的介绍1.2 仿函数的优势 二、priority_queue2.1 push2.2 pop2.3 top2.4 size2.5 empty 三、…

[Java 探索之路~大数据篇] 新时代大数据流处理入门指南

本文主要介绍大数据基础&#xff0c;以及 flink 流计算 文章目录 【基础知识】1. 批处理与流处理1.批处理2.流处理 2. 为什么需要一个优秀的流处理框架1. 股票交易的业务场景2.生产者——消费者模型3. 流处理框架要解决的诸多问题&#xff08;1&#xff09;可扩展性&#xff08…

自定义View中的ListView和ScrollView嵌套的问题

当我们在使用到ScrollView和ListView的时候可能会出现显示不全的问题。那我们可以进行以下分析 ScrollView在测量子布局的时候会用UNSPECIFIED。通过源码观察&#xff0c; 在ScrollView的onMeasure方法中 Overrideprotected void onMeasure(int widthMeasureSpec, int heightMe…

C++ 类的大小 原理+详细计算示例

大小的组成 类的大小受&#xff1a;基类&#xff0c;成员&#xff0c;虚基表指针&#xff0c;虚函数表指针 影响。 计算方式 需要按照下列要素对齐和规则计算对齐&#xff1a; 对齐要素 编译器默认对齐数 根据环境改变&#xff0c;一般32位为4&#xff0c;64位为8。 有效…

KMP算法模板

KMP算法模板 自用&#xff0c;相关题解参考

电瓶车充电安全谈|南京小区15死44伤火灾背后的思考

今年2月23日&#xff0c;南京雨花台区明尚西苑居民楼发生了一起重大火灾事故&#xff0c;在事故中&#xff0c;共有59人受到不同程度的伤害&#xff0c;遇难的有15人&#xff0c;另有44人在医院接受治疗。 南京雨花台区火灾的发生无疑是一场令人痛心的悲剧&#xff0c;这场事故…

如何在 Linux 中快速清空文件而不删除它们?

在Linux系统中&#xff0c;清空文件而不删除它们是一种常见的需求&#xff0c;特别是在需要保留文件结构或权限的情况下。本文将详细介绍如何在Linux环境中快速清空文件内容的多种方法&#xff0c;以及每种方法的优缺点。清空文件通常涉及到文件内容的擦除&#xff0c;但并不涉…

【MySQL】事务管理 -- 详解

一、前言 CURD 不加控制&#xff0c;会有什么问题&#xff1f; CURD 满足什么属性&#xff0c;能解决上述问题&#xff1f; 买票的过程得是原子的。买票应该不能受互相的影响。买完票应该要永久有效。买前和买后都要是确定的状态。 什么是事务&#xff1f; 事务就是一组 DML…

DCTNet

DCTNet http://giantpandacv.com/academic/%E7%AE%97%E6%B3%95%E7%A7%91%E6%99%AE/%E9%A2%91%E5%9F%9F%E4%B8%AD%E7%9A%84CNN/CVPR%202020%20%E5%9C%A8%E9%A2%91%E5%9F%9F%E4%B8%AD%E5%AD%A6%E4%B9%A0%E7%9A%84DCTNet/ 一个对输入图像进行频域转换和选择的方法&#xff0c;达到…