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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(十五)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

【嵌入式移植】8、U-Boot源码分析5—启动过程分析start.S

U-Boot源码分析5—启动过程分析start.S 1、boot0.h2、reset2.1、vectors2.2、ELn2.2.1 EL32.2.2、EL2、EL1 2.3、SMPEN2.3、core errate2.4、lowlevel_init 前面从U-Boot编译的角度分析了其Makefile、链接脚本等&#xff0c;本章开始正式分析U-Boot启动过程 从上一篇文章7、U-…

ClickHouse SQL Reference (四)数据类型

Tuple(T1, T2, …) 元素元组&#xff0c;每个元素都有一个单独的类型。元组必须至少包含一个元素。 元组用于临时列分组。在查询中使用IN表达式时&#xff0c;以及指定lambda函数的某些形式参数时&#xff0c;可以对列进行分组。有关更多信息&#xff0c;请参阅IN操作符和高阶…

u-boot 基础学习:板级配置 Kconfig 的包含

前言 u-boot 与 Linux 内核在嵌入式Linux开发中占有重要的地位&#xff0c;掌握 u-boot 的基础开发&#xff0c;可以大大提升开发能力&#xff0c;并提高开发的效率。 u-boot 下 如何配置 板级的Kconfig 呢&#xff1f;u-boot 下板级的 Kconfig 是怎么包含到 主目录下 Kconfig…

【代码随想录算法训练营Day34】860.柠檬水找零;406.根据身高重建队列;452.用最少数量的箭引爆气球

❇️Day 34 第八章 贪心算法 part04 ✴️今日任务 860.柠檬水找零406.根据身高重建队列452.用最少数量的箭引爆气球 ❇️860.柠檬水找零 本题看上好像挺难&#xff0c;其实挺简单的&#xff0c;大家先尝试自己做一做。题目链接&#xff1a;https://leetcode.cn/problems/lem…

【计算机网络】IO多路转接之poll

文章目录 一、poll函数接口二、socket就绪条件三、poll的优点四、poll的缺点五、poll使用案例--只读取数据的server服务器1.err.hpp2.log.hpp3.sock.hpp4.pollServer.hpp5.main.cc 一、poll函数接口 #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int t…

“羊驼“入侵CV,美团浙大沈春华团队将LLaMA向CV扩展,构建全新基础模型VisionLLaMA

本文首发:AIWalker https://arxiv.org/abs/2403.00522 https://github.com/Meituan-AutoML/VisionLLaMA 本文概述 大型语言模型构建在基于Transformer的架构之上来处理文本输入, LLaMA 系列模型在众多开源实现中脱颖而出。类似LLaMa的Transformer可以用来处理2D图像吗&#xf…

Python绘制不同形状词云图

目录 1.基本词云图1.1 导入所需库1.2 准备词汇1.3 配置参数并生成词云图1.4 在Python窗口中显示图片1.5 效果展示1.6 完整代码 2. 不同形状词云图2.1 找到自己所需形状图片2.2 利用PS将图片设置为黑白色2.3 在代码中设置背景2.4 效果展示 1.基本词云图 1.1 导入所需库 import…

远程调用--webClient

远程调用webClient 前言1、创建webClient2、准备数据3、执行请求4、接收返回响应到的数据整体代码 前言 非阻塞、响应式HTTP客户端 1、创建webClient WebClient client WebClient.create();2、准备数据 Map<String,String> params new HashMap<>();params.pu…

贪心算法(区间问题)

452. 用最少数量的箭引爆气球 题目(求无重复区间) 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着…

利用Python爬取8684公交路线查询网站中全国公交站点信息

利用python语言结合requests、BeautifulSoup等类库爬取https://api.8684.cn/v3/api.php?docitys&actprovince对应接口中所有城市公交路线信息以及公交站点信息。 import time import requests import json, re from bs4 import BeautifulSoup# 定义一个函数&#xff0c;传…

“祖传代码“的是是非非

程序员眼中的“祖传代码”&#xff0c;就像一本古老而神秘的魔法书&#xff0c;藏着无穷的智慧和技巧&#xff0c;有些代码像家传宝贝&#xff0c;有些像祖传秘方。快来分享一下你遇到的“祖传代码”吧~ 祖传代码的历史与文化价值 祖传代码通常指的是经过长时间使用和传承的代…

【DUSt3R】2张图2秒钟3D重建

【DUSt3R】2张图2秒钟3D重建 1. DUSt3R是一种用于稠密和无约束立体三维重建的方法,其实现步骤如下:2. 实际运行效果3. 运行结果4. 自问自答4.1 为社么这里要是使用transform模型呢?4.2 CroCo(通过跨视图完成3D视觉任务的自我监督预训练的一个研究)在DUSt3R的作用是什么,为…

打家劫舍(java版)

&#x1f4d1;前言 本文主要是【动态规划】——打家劫舍(java版)的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一…

17 easy 290. 单词规律

//给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 // // 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 // // // // 示例1: // // //输入: patte…

一款不错的多端SSH工具:Xterminal

1、不仅是强大的SSH工具&#xff0c;更提供本地控制台&#xff0c;以及更多即将推出的开发相关功能&#xff0c;让您专注于创造卓越的代码 2、AI赋能&#xff0c;智能命令提示&#xff0c;为大脑解压 AI解答&#xff0c;让你的疑问得到即时解答 AI智能提示&#xff0c;让每一…

CodeFlying 和 aixcoder两大免费软开平台,孰强孰弱?

今天为大家带来码上飞CodeFlying和aixcoder两款免费的软件开发平台效果的测评 一、产品介绍 首先简单介绍一下这两个平台 码上飞CodeFlying&#xff1a;码上飞 CodeFlying | AI 智能软件开发平台&#xff01; 是一款革命性的软件开发平台&#xff0c;它通过将软件工程和大模…

Redis是AP的还是CP的?

redis是一个开源的内存数据库&#xff0c;那么他到底是AP的还是CP的呢&#xff1f; 有人说&#xff1a;单机的是redis是cp的&#xff0c;而集群的redis是ap的&#xff1f; 但是我不这么认为&#xff0c;我觉得redis就是ap的&#xff0c;虽然在单机redis中&#xff0c;因为只有…

Git 基本操作 ⼯作区、暂存区、版本库

创建本地仓库&#xff1a; 创建 Git 本地仓库 要提前说的是&#xff0c;仓库是进行版本控制的⼀个文件目录。我们要想对文件进行版本控制&#xff0c;就必须先创建⼀个仓库出来。 首先touch 一个文件&#xff1a; 初始化仓库&#xff1a; 创建完成后&#xff0c;我们会发现当前…

行列式错题本

《1800》 1 阶数和转置 A是三阶,B是4阶,还有2这个系数 2 怎么啥也不会呀,委屈 行列式的拆分+提取系数 3