apt和apt-get的区别

文章目录

  • 环境
  • 问题
  • 背景
  • 区别
    • 进度条
    • 显示可更新包的数量
    • upgrade
  • 对比
  • apt-get 过时了吗
  • 使用apt还是apt-get
  • 总结
  • 参考

环境

  • RHEL 9.3
  • Docker Community 24.0.7
  • Ubuntu Docker image
    • jammy 22.04
    • lunar 23.04
  • Ubuntu 22.04

问题

aptapt-get 有一些相似之处。比如,如果想安装vim,下面两种方法都可以:

  • apt install vim
  • apt-get install vim

那么问题来了:

  • apt-getapt 有什么区别?
  • 如果二者差不多,为何还要引入 apt 呢?
  • 如果 aptapt-get 好,那还有必要继续使用 apt-get 吗,还是应该都使用 apt 呢?

背景

Debian系统(比如Ubuntu)使用Advanced Packaging Tool(APT)来管理系统里的包。注意这里的APT不是指 apt 命令。

在基于Debian的Linux系统里,有一系列工具可以和APT交互,用来安装、卸载、管理包, apt-get 就是其中一个,类似的还有 apt-cacheapt-config 等。

这些命令通常被称为“低级”(low-level)命令,它们包含很多用户不太常用的功能。另一方面,一些常用的包管理功能分散在各种 apt-xxx 命令里。

为了简化,引入了 apt 命令。 apt 包含了 apt-xxx 命令里最常用的功能,这样,用户就不再需要使用 apt-xxx 命令来管理包,而只需使用一个 apt 命令。

apt 的参数选项比 apt-xxx 少,毕竟是为了方便用户使用,只包含了最常用的功能。

此外, apt 的用户界面更加友好。

区别

接下来用几个示例展示 aptapt-get 的区别。

进度条

(注:本例测试环境为Ubuntu Docker image(jammy,22.04)。)

apt install vim 在安装过程中,会显示进度条:

在这里插入图片描述

而使用 apt-get install vim 时,则不会显示进度条。

在这里插入图片描述

可以通过配置 /etc/apt/apt.conf.d/99fancy 文件,使得 apt-get 显示进度条:

DPkg::Progress-Fancy "1";
APT::Color "1";

亲测有效。

注:可以通过配置 /etc/apt/apt.conf.d/99progressbar 文件,决定 apt 是否显示进度条:

Dpkg::Progress-Fancy"1";

但在我的测试里,无论是否有该配置, apt 都会显示进度条。我猜测这可能只对旧的Ubuntu版本有效,当时 apt 可能还没有默认显示进度条。

显示可更新包的数量

(注:使用Ubuntu Docker image(jammy,22.04)做 apt update 时,最后显示没有可更新的包。本例使用的是 ubuntu:lunar Docker image(lunar,23.04)。)

apt update 命令会在最后面,显示可更新包的数量:

apt update
Get:1 http://security.ubuntu.com/ubuntu lunar-security InRelease [109 kB]
Get:2 http://archive.ubuntu.com/ubuntu lunar InRelease [267 kB]
Get:3 http://security.ubuntu.com/ubuntu lunar-security/restricted amd64 Packages [612 kB]
Get:4 http://archive.ubuntu.com/ubuntu lunar-updates InRelease [109 kB]
Get:5 http://archive.ubuntu.com/ubuntu lunar-backports InRelease [99.9 kB]
Get:6 http://security.ubuntu.com/ubuntu lunar-security/main amd64 Packages [610 kB]
Get:7 http://security.ubuntu.com/ubuntu lunar-security/universe amd64 Packages [975 kB]
Get:8 http://archive.ubuntu.com/ubuntu lunar/restricted amd64 Packages [181 kB]
Get:9 http://security.ubuntu.com/ubuntu lunar-security/multiverse amd64 Packages [7793 B]
Get:10 http://archive.ubuntu.com/ubuntu lunar/multiverse amd64 Packages [289 kB]         
Get:11 http://archive.ubuntu.com/ubuntu lunar/universe amd64 Packages [18.7 MB]
Get:12 http://archive.ubuntu.com/ubuntu lunar/main amd64 Packages [1797 kB]                                                                                                                                                                 
Get:13 http://archive.ubuntu.com/ubuntu lunar-updates/universe amd64 Packages [1079 kB]                                                                                                                                                     
Get:14 http://archive.ubuntu.com/ubuntu lunar-updates/main amd64 Packages [712 kB]                                                                                                                                                          
Get:15 http://archive.ubuntu.com/ubuntu lunar-updates/multiverse amd64 Packages [7793 B]                                                                                                                                                    
Get:16 http://archive.ubuntu.com/ubuntu lunar-updates/restricted amd64 Packages [613 kB]                                                                                                                                                    
Get:17 http://archive.ubuntu.com/ubuntu lunar-backports/universe amd64 Packages [4201 B]                                                                                                                                                    
Fetched 26.1 MB in 12s (2207 kB/s)                                                                                                                                                                                                          
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.

apt-get update 命令则不显示可更新包的数量:

apt-get update
Get:1 http://archive.ubuntu.com/ubuntu lunar InRelease [267 kB]
Get:2 http://security.ubuntu.com/ubuntu lunar-security InRelease [109 kB]
Get:3 http://archive.ubuntu.com/ubuntu lunar-updates InRelease [109 kB]
Get:4 http://archive.ubuntu.com/ubuntu lunar-backports InRelease [99.9 kB]            
Get:5 http://security.ubuntu.com/ubuntu lunar-security/multiverse amd64 Packages [7793 B]
Get:6 http://archive.ubuntu.com/ubuntu lunar/main amd64 Packages [1797 kB]
Get:7 http://security.ubuntu.com/ubuntu lunar-security/main amd64 Packages [610 kB]
Get:8 http://archive.ubuntu.com/ubuntu lunar/universe amd64 Packages [18.7 MB]
Get:9 http://security.ubuntu.com/ubuntu lunar-security/universe amd64 Packages [975 kB]  
Get:10 http://security.ubuntu.com/ubuntu lunar-security/restricted amd64 Packages [612 kB]
Get:11 http://archive.ubuntu.com/ubuntu lunar/multiverse amd64 Packages [289 kB]                                                                                                                                                            
Get:12 http://archive.ubuntu.com/ubuntu lunar/restricted amd64 Packages [181 kB]                                                                                                                                                            
Get:13 http://archive.ubuntu.com/ubuntu lunar-updates/restricted amd64 Packages [613 kB]                                                                                                                                                    
Get:14 http://archive.ubuntu.com/ubuntu lunar-updates/universe amd64 Packages [1079 kB]                                                                                                                                                     
Get:15 http://archive.ubuntu.com/ubuntu lunar-updates/multiverse amd64 Packages [7793 B]                                                                                                                                                    
Get:16 http://archive.ubuntu.com/ubuntu lunar-updates/main amd64 Packages [712 kB]                                                                                                                                                          
Get:17 http://archive.ubuntu.com/ubuntu lunar-backports/universe amd64 Packages [4201 B]                                                                                                                                                    
Fetched 26.1 MB in 9s (3041 kB/s)                                                                                                                                                                                                           
Reading package lists... Done

upgrade

(注:本例测试环境为Ubuntu 22.04(非Docker image)。)

查看 aptapt-get 的帮助:

  • man apt

upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list(5). New packages will be installed if required to satisfy dependencies, but existing packages will never be removed. If an upgrade for a package requires the removal of an installed package the upgrade for this package isn’t performed.

  • man apt-get

upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. An update must be performed first so that apt-get knows that new versions of packages are available.

简而言之:

  • 共同点:二者都不会删除已安装的包
  • 不同点:如果升级时发现有被依赖的新包,则 apt upgrade 会安装新包,而 apt-get upgrade 则不会安装新包

例如:

apt --simulate upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:linux-headers-5.15.0-91 linux-headers-5.15.0-91-generic linux-image-5.15.0-91-generic linux-modules-5.15.0-91-generic linux-modules-extra-5.15.0-91-generic
The following packages have been kept back:python3-update-manager update-manager-core
The following packages will be upgraded:binutils binutils-common binutils-x86-64-linux-gnu cryptsetup cryptsetup-bin cryptsetup-initramfs curl distro-info distro-info-data irqbalance kpartx libbinutils libc-bin libc6 libcryptsetup12 libctf-nobfd0 libctf0 libcurl3-gnutls libcurl4libsqlite3-0 libssh-4 linux-firmware linux-generic linux-headers-generic linux-image-generic locales multipath-tools openssh-client openssh-server openssh-sftp-server python3-cryptography python3-distro-info python3-software-propertiessoftware-properties-common systemd-hwe-hwdb tar vim vim-common vim-runtime vim-tiny xxd
41 upgraded, 5 newly installed, 0 to remove and 2 not upgraded.
apt-get --simulate upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:linux-generic linux-headers-generic linux-image-generic python3-update-manager update-manager-core
The following packages will be upgraded:binutils binutils-common binutils-x86-64-linux-gnu cryptsetup cryptsetup-bin cryptsetup-initramfs curl distro-info distro-info-data irqbalance kpartx libbinutils libc-bin libc6 libcryptsetup12 libctf-nobfd0 libctf0 libcurl3-gnutls libcurl4libsqlite3-0 libssh-4 linux-firmware locales multipath-tools openssh-client openssh-server openssh-sftp-server python3-cryptography python3-distro-info python3-software-properties software-properties-common systemd-hwe-hwdb tar vimvim-common vim-runtime vim-tiny xxd
38 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.

注: --simulate 表示模拟操作,并没有真正升级。

对比可见, apt upgrade 安装了5个新包。这是因为,升级Linux kernel版本,实际上是安装了新的Linux kernel,其包名是不同的,所以对于系统来说,相当于安装了新的包。 apt-get upgrade 不会安装新包。如果想用 apt-get 更新kernel,需要用 dist-upgrade 选项。

对比

虽然 aptapt-get 有一些相似的命令选项,但 apt 并没有设计为向后兼容 apt-get 。这就意味着如果把 apt-get xxx 里的 apt-get 替换为 apt ,则无法保证修改后的命令是正确的。

aptapt-xxx 的简单对比如下:

apt 命令替代的 apt-xxx 命令功能
apt installapt-get install安装包
apt removeapt-get remove卸载包
apt updateapt-get update更新仓库索引
apt upgradeapt-get upgrade更新所有可更新的包
apt autoremoveapt-get autoremove卸载不想要的包
apt full-upgradeapt-get dist-upgrade更新包并自动处理依赖
apt searchapt-cache search查找包
apt showapt-cache show显式包详细信息

apt 也有一些新的选项:

新的 apt 命令功能
apt list包列表以及是否已安装,是否可升级等信息
apt edit-sources编辑 sources.list 文件

apt-get 过时了吗

没有迹象表明 apt-get 过时了,它仍然比 apt 提供了更多的功能。

对于底层的操作,比如脚本、开发处理APT的CLI工具等, apt-get 仍然会被用到。

使用apt还是apt-get

优先使用 apt ,对于 apt 不包含的功能,再使用 apt-xxx

总结

  • aptapt-xxx 的子集
  • apt 简化了使用,并且对用户更加友好
  • 优先使用 apt

参考

  • https://itsfoss.com/apt-vs-apt-get-difference
  • https://www.baeldung.com/linux/apt-vs-apt-get

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

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

相关文章

Vue-9、Vue事件修饰符

1、prevent 阻止默认事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>事件修饰符</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdeliv…

Native Crash回溯栈

获取调用栈四种方案&#xff1a;Android Native Crash 收集 1、使用系统的<unwind.h>库 可以获取到出错文件与函数名。只不过需要自己解析函数符号&#xff0c;同时经常会捕获到系统错误&#xff0c;需要手动过滤。 2、libcorkscrew 在4.1.1以上&#xff0c;5.0以下&…

微信小程序+前后端开发学习材料

目录结构 全局文件 1.app.json 文件 用来对微信小程序进行全局配置&#xff0c;决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。文件内容为一个 JSON 对象。 1.1 page用于指定小程序由哪些页面组成&#xff0c;每一项都对应一个页面的 路径&#xff08;含文…

2024年第九届机器学习技术国际会议(ICMLT 2024) 即将召开

2024年第九届机器学习技术国际会议&#xff08;ICMLT 2024&#xff09;将于2024年5月24-26日在挪威奥斯陆举行。ICMLT 2024旨在讨论机器学习技术领域的最新研究技术现状和前沿趋势&#xff0c;为来自世界各地的科学家、工程师、实业家、学者和其他专业人士提供一个互动和交流的…

SCT2A27STER:5.5V-100V Vin,4A峰值限流,高效异步降压DCDC转换器,集成200mA LDO

特性&#xff1a; • 5.5V-100V 输入电压范围 • 最大输出电压&#xff1a;30V • 2A 连续输出电流 • 4A峰值电流限制 • 1.2V 1% 反馈电压 • 集成500mΩ 高侧功率 MOSFETs • 可选5V或者3.3V,输出一路200mA LDO • 25uA静态电流&#xff0c;VBIAS连接到高于6V的辅助电源 •…

Ubuntu18.04 安装 qt 5.15.2

一.安装qt 1.下载 在线安装包 使用国内镜像源在线安装QT(2023.3.25更新)_qt国内镜像-CSDN博客 2.安装 &#xff08;1&#xff09;QT库安装&#xff1a; 注意&#xff1a;我安装时 勾选 Qt Design studio 会导致报错&#xff0c;直接不勾选。 注意&#xff1a;Qtcreator 无…

Orchestrator源码解读2-故障失败发现

目录 目录 前言 核心流程函数调用路径 GetReplicationAnalysis 故障类型和对应的处理函数 拓扑结构警告类型 与MHA相比 前言 Orchestrator另外一个重要的功能是监控集群&#xff0c;发现故障。根据从复制拓扑本身获得的信息&#xff0c;它可以识别各种故障场景。Orchest…

Deno 1.22 发布

目录 更新默认的类型检查模式 移除Deno.emit()Deno.formatDiagnostics()和Deno.applySourceMap() API 默认启用Deno命名空间 --no-config标识 Navigator.userAgent 更新 Deno.resolveDns() API 引入新的Response.json()静态方法 在 LSP 默认启用 Linting 对测试运行程…

7 集中式日志和分布式跟踪

文章目录 日志聚合模式日志集中化的简单解决方案使用日志并输出分布式跟踪Spring Cloud Sleuth实现分布式跟踪 小结 前面的文章&#xff1a; 1、 1 一个测试驱动的Spring Boot应用程序开发 2、 2 使用React构造前端应用 3、 3 试驱动的Spring Boot应用程序开发数据层示例 4、…

北京大学漏洞报送证书

获取来源&#xff1a;edusrc&#xff08;教育漏洞报告平台&#xff09; url&#xff1a;教育漏洞报告平台(EDUSRC) 兑换价格&#xff1a;30金币 获取条件&#xff1a;北京大学任意中危或以上级别漏洞

机器学习系列--R语言随机森林进行生存分析(2)

随机森林&#xff08;Breiman 2001a&#xff09;&#xff08;RF&#xff09;是一种非参数统计方法&#xff0c;需要没有关于响应的协变关系的分布假设。RF是一种强大的、非线性的技术&#xff0c;通过拟合一组树来稳定预测精度模型估计。随机生存森林&#xff08;RSF&#xff0…

软件测试|MySQL ORDER BY详解:排序查询的利器

简介 在数据库中&#xff0c;我们经常需要对查询结果进行排序&#xff0c;以便更好地展示数据或满足特定的业务需求。MySQL提供了ORDER BY子句&#xff0c;使我们能够轻松地对查询结果进行排序。本文将详细介绍MySQL ORDER BY的用法和示例&#xff0c;帮助大家更好地理解和应用…

电子学会C/C++编程等级考试2023年12月(一级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:数的输入和输出 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制:1000 内存限制:65536 输入 一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。 输出 一行两个数,分…

Unity SVN更新提交小工具

Unity SVN更新提交小工具 前言使用说明必要前提源码参数说明 感谢 前言 Unity开发时每次都要到文件夹中操作SVN&#xff0c;做了一个小工具能够在Editor中直接操作。 使用说明 必要前提 前提是要安装好SVN&#xff0c;在文件夹右键能够看到安装的SVN 源码 using System…

c#自动更新升级工具

c#更新工具,wpf开发,所有windows桌面程序均可使用,基于.net 4.0,最低支持windos xp系统 更新工具优点 使用简单批量更新跨版本更新数据备份手动还原数据体积小 程序更新使用效果 使用简单 只需添加两个类,以及三个路径的指定,就可以从任何地方下载更新包,并解压到主程序目录…

linux异常情况,排查处理中

登录客户环境后&#xff0c;发现一个奇怪情况如下图&#xff0c;之前也遇到过&#xff0c;直接fuser -ck /backup操作的话&#xff0c;主机将会重启&#xff0c;因数据库运行中&#xff0c;等待停机维护时间&#xff0c;同时也在想办法不重启的情况下解决该问题 [rootdb ~]# f…

万界星空科技MES系统怎么管理生产?

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;是一种用于管理和监控生产过程的软件系统。它通常与企业的ERP系统&#xff08;Enterprise Resource Planning&#xff0c;企业资源计划&#xff09;集成&#xff0c;用于实时收集和分析…

浅谈WAF——守护网络安全的无形之盾

随着信息化时代的到来&#xff0c;网络已逐渐融入我们日常生活的方方面面。然而&#xff0c;与此同时&#xff0c;网络安全问题却也如影随形。为此&#xff0c;一种名为“Web应用防火墙”的工具应运而生&#xff0c;简称”WAF”。 WAF是什么&#xff1f; WAF&#xff08;Web …

Docker 存储卷管理

一、存储卷简介 存储卷是一种方便、灵活、高效的Docker容器内数据存储方式。存储卷可以在容器内的不同进程间共享数据&#xff0c;并且可以在容器之间共享和重用。 二、存储卷的优点 可以在容器之间共享和重用&#xff0c;避免了在不同容器之间复制数据的繁琐。对数据卷的修…

【Flink精讲】Flink数据延迟处理

面试题&#xff1a;Flink数据延迟怎么处理&#xff1f; 将迟到数据直接丢弃【默认方案】将迟到数据收集起来另外处理&#xff08;旁路输出&#xff09;重新激活已经关闭的窗口并重新计算以修正结果&#xff08;Lateness&#xff09; Flink数据延迟处理方案 用一个案例说明三…