当前位置: 首页 > news >正文

apt 的 update 和 upgrade 命令的区别是什么?

如果想让你的 Ubuntu 或者 Debian 系统保持更新,要用 sudo apt update 和 sudo apt upgrade 命令组合。

一些以前的教程也会提到 sudo apt-get update 和 sudo apt-get upgrade 。

apt 和 apt-get 命令运行起来几乎一样,除了一些细微的差别,后面我会讨论。

我们首先讨论一下 update 和 upgrade 的区别。这两个难道不是一样的吗?

apt 的 update 和 upgrade 的区别

尽管听上去运行 apt update 可以给你一个包的最新版本,然而这并不正确。 update 命令只会获得系统上所有包的最新信息,并不会下载或者安装任何一个包。而是 apt upgrade 命令来把这些包下载和升级到最新版本。

还是有点困惑?让我来接着解释。我建议阅读包管理器的概念。这个会帮你更好的理解这些东西。

Linux Package Manager Explanation

基本上,你的系统围绕着一个所有可用包的数据库(缓存)工作。注意,这个缓存(或者数据库)并不包含这些包本身,仅仅是关于包的元数据(版本、仓库、依赖等)。

如果你不更新这个数据库,系统就不会知道是否有更新的版本。

当你运行 apt update 或者 apt-get update 命令,它会获取这些包的最新元数据(包的版本等)。

apt update

这时候本地缓存就被更新了,有一些包可以升级。用 sudo apt upgrade 可以升级所有(可升级的)包。

它会显示要升级的包,并且通过回车(默认选择是 Y )或者按下 Y 键进行确认。要在这个阶段取消升级,可以按下 N 。

apt upgrade

下面这些可能会帮助你记忆:

apt update
apt upgrade

因为有一些管理员命令,需要作为 root 运行。因此需要使用 sudo 配合其他命令。 sudo 使你能够作为 root 在 Ubuntu 和 Debian 上运行命令。

既然理解了 update 和 upgrade 是如何一起运行的,我们接下来来讨论一下 apt 和 apt-get 的用法。

apt 还是 apt-get?应该用哪个?

Debian 和 Ubuntu 使用的是 APT 包管理系统。不要和 apt 命令弄混了。

有许多和 APT 包管理交互的命令; apt-get 、 apt 、 dpkg 、 aptitude 等。

这里面最受欢迎的就是 apt-get 命令。它是一个 低层级(low-level) 且功能丰富的命令。 apt 是 apt-get 命令的一个更新而更简单的版本。

可以读一下这篇文章来 了解 atp 和 apt-get 命令的不同 。下面重点讨论这些命令中 update 和 upgrade 选项的区别。

apt update vs apt-get update

apt-get update 和 apt update 做的是同样的事,都是更新本地包缓存,这样的话你的系统就知道有哪些包的版本是可用的。

从技术上讲,其实并没有区别。然而, apt update 在一个方面比 apt-get update 做的好, 它会告诉你可升级的包的数量 。

Hit:15 https://ppa.launchpadcontent.net/slimbook/slimbook/ubuntu jammy InRelease
Fetched 213 kB in 4s (55.8 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.

apt-get update 甚至不会告诉你包是否可以升级。

apt get update

apt update output

从 apt 中可以看到列出可升级的包,而 apt-get 甚至没有这个选项。

# apt list --upgradable
Listing... Done
fprintd/jammy-updates 1.94.2-1ubuntu0.22.04.1 amd64 [upgradable from: 1.94.2-1]
gnome-control-center-data/jammy-updates,jammy-updates 1:41.7-0ubuntu0.22.04.4 all [upgradable from: 1:41.7-0ubuntu0.22.04.1]
gnome-control-center-faces/jammy-updates,jammy-updates 1:41.7-0ubuntu0.22.04.4 all [upgradable from: 1:41.7-0ubuntu0.22.04.1]
gnome-control-center/jammy-updates 1:41.7-0ubuntu0.22.04.4 amd64 [upgradable from: 1:41.7-0ubuntu0.22.04.1]
libpam-fprintd/jammy-updates 1.94.2-1ubuntu0.22.04.1 amd64 [upgradable from: 1.94.2-1]
vivaldi-stable/stable 5.4.2753.40-1 amd64 [upgradable from: 5.4.2753.37-1]

现在来比较一下两个命令中 upgrade 的选项。

apt upgrade vs apt-get upgrade

apt-get upgrade 和 apt upgrade 命令根据本地包缓存(通过 update 命令更新)的数据,安装可升级包的最新版本。

然而, apt upgrade 命令会做两件与 apt-get upgrade 不同的事情。

apt upgrade 命令可以升级 Linux 内核版本, apt-get upgrade 不能。 apt-get 命令需要使用apt-get dist-upgrade 来升级内核版本。

apt-get upgrade command cannot upgrade Linux kernel version

这是因为升级内核版本意味着安装一个全新的包。 apt-get upgrade 命令不能安装一个新的包。它只能升级现有的包。

apt upgrade 比 apt-get 做的好的另一件小事是,它会在底部 显示一个进度条 。

apt upgrade progress bar

总结

update 和 upgrade 两个词很相似,这就是为什么很多新用户会感到困惑。有时候,我觉得 apt update 命令应该和 apt upgrade 命令合并。

我意思是 upgrade (所有已安装的包)和 update (本地包元数据缓存)一起完成工作。为什么要有两个分开的命令呢?把这两个领命合成一个 upgrade 命令吧。Fedora 就是这样对 DNF 命令进行了改进。不过这只是我的观点。

我希望这篇文章可以解释一些关于 apt-get update 、 apt-get upgrade 和 apt update 以及 apt upgrade 命令的问题。

相关文章:

  • 【从零学Python】一些工具类的使用:SummaryWriter()、tqdm()
  • 计算机毕业设计ssm+vue基本微信小程序的考试刷题及分析系统小程序
  • MMlab 官方教程链接汇总
  • win10你的设备遇到问题,需要重启的五种解决方法
  • 【MyBatis笔记12】MyBatis中二级缓存相关配置内容
  • EasyExcel 官网观看建议
  • 再苦再累也必须要弄懂的:ES6的ES Module
  • K210使用Mx-yolov3训练
  • Springboot中日志的简单使用
  • 0. SQL细节要点
  • 网络安全——Cobaltstrike
  • 架构师的 36 项修炼第07讲:高性能系统架构设计
  • 微信小程序开发03 自定义组件:怎么培养组件化思维?
  • 4.bs4 节点遍历
  • 基于ssm+vue+elementui的二手车交易管理系统
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Android交互
  • leetcode386. Lexicographical Numbers
  • Linux链接文件
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • scala基础语法(二)
  • vue-cli在webpack的配置文件探究
  • 关于Flux,Vuex,Redux的思考
  • 回顾2016
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 入口文件开始,分析Vue源码实现
  • 网页视频流m3u8/ts视频下载
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 译米田引理
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.ajax()参数及用法
  • (2)(2.10) LTM telemetry
  • (3)(3.5) 遥测无线电区域条例
  • (floyd+补集) poj 3275
  • (pojstep1.3.1)1017(构造法模拟)
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (六)vue-router+UI组件库
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)创业的注意事项
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET6实现破解Modbus poll点表配置文件
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .Net的DataSet直接与SQL2005交互
  • .NET学习教程二——.net基础定义+VS常用设置
  • [145] 二叉树的后序遍历 js
  • [BZOJ1053][HAOI2007]反素数ant
  • [BZOJ4566][HAOI2016]找相同字符(SAM)