首页 > 其他分享 >apt update与upgrade 区别

apt update与upgrade 区别

时间:2023-09-08 10:12:53浏览次数:47  
标签:upgrade get update apt 命令 版本

转载自:《apt的update和upgrade区别》

如果想让你的 Ubuntu 或者 Debian 系统保持更新,要用 sudo apt update 和 sudo apt upgrade 命令组合。我们首先讨论一下 update 和 upgrade 的区别。这两个难道不是一样的吗?

一些以前的教程也会提到 ​​sudo apt-get update​​​ 和 ​​sudo apt-get upgrade​​。​​apt​​​ 和 ​​apt-get​​ 命令运行起来几乎一样,除了一些细微的差别,后面我会讨论。我们首先讨论一下 ​​update​​​ 和 ​​upgrade​​ 的区别。这两个难道不是一样的吗?

apt 的 update 和 upgrade 的区别

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

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

apt的update和upgrade区别apt的update和upgrade区别

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

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

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

apt的update和upgrade区别apt的update和upgrade区别

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

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

apt的update和upgrade区别apt的update和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的update和upgrade区别apt的update和upgrade区别
apt的update和upgrade区别apt的update和upgrade区别

从 ​​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的update和upgrade区别apt的update和upgrade区别

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

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

apt的update和upgrade区别apt的update和upgrade区别

总结

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

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

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

标签:upgrade,get,update,apt,命令,版本
From: https://www.cnblogs.com/FBsharl/p/17686757.html

相关文章

  • 论文解读(CST)《Cycle Self-Training for Domain Adaptation》
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:CycleSelf-TrainingforDomainAdaptation论文作者:HongLiu,JianminWang,MingshengLong论文来源:2021 论文地址:download 论文代码:download视屏讲解:click......
  • Warning: apt-key is deprecated(Ubuntu)
    在Ubuntu系统添加key到trusted数据库,会提示“apt-keyisdeprecated”Warning:apt-keyisdeprecated.Managekeyringfilesintrusted.gpg.dinstead(seeapt-key(8)).这个提示意思是:不赞成使用apt-key 这个程序,推荐使用trusted.gpg.d观看秘钥,也就是我们应该把秘钥......
  • mysql insert into on duplicate key update
    新增如果遇到主键冲突,则更新新建一张表,除了主键id,还有唯一健mobilecreatetableexample_user(idint(4)notnullauto_increment,namevarchar(20),mobilevarchar(20),addressvarchar(100),view_countint(4),primarykey(id),uniqu......
  • 如何使用 Update in Case 语句和列作为别名
    在MySQL中,可以使用UPDATE和CASE语句来更新表中的数据,并且可以使用列别名来引用列。以下是一个示例,展示如何在UPDATE语句中使用CASE和列别名:假设有一个名为users的表,包含id、name和age列。要根据条件更新age列,可以使用如下的UPDATE语句:UPDATEusersSETage=CASEWHENname=......
  • VMware vSphere 8.0 Update 2 下载地址(ESXi 8.0 U2 & vCenter Server 8.0 U2)
    ESXi8.0U2&vCenterServer8.0U2请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u2/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org企业级工作负载平台vSphere将云计算的优势引入本地部署工作负载。vSphere可提高性能和运维效率并加速创新。vSpher......
  • Android官方资料--OTA Updates
    OTAUpdatesINTHISDOCUMENTAndroiddevicelayoutLifeofanOTAupdateMigratingfromPreviousReleasesAndroiddevicesinthefieldcanreceiveandinstallover-the-air(OTA)updatestothesystemandapplicationsoftware.Deviceshaveaspecialrecove......
  • 结构型设计模式-适配器 Adapter
    结构型设计模式-适配器Adapterdate:April13,2021slug:design-pattern-adapterstatus:Publishedtags:设计模式type:Page简介适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作角色Client接口/Target目标接口用户使用的接口Adaptee被......
  • Android官方资料--A/B System Updates
    A/BSystemUpdatesINTHISDOCUMENTOverviewBootloaderstateexamplesUpdateEnginefeaturesLifeofanA/BupdatePost-installstepImplementationKernelpatchesKernelcommandlineargumentsRecoveryBuildvariablesPartitionsFstabKernelslotargumentsOTApacka......
  • android源码分析1--updater(l上)
    一install.cpp中调用updater:constchar*binary="/tmp/update_binary";constchar**args=(constchar**)malloc(sizeof(char*)*5);args[0]=binary;args[1]=EXPAND(RECOVERY_API_VERSION);//definedinAndroid.mkchar*temp=......
  • aosp源码分析 5.0 BlockImageUpdateFn
    block_image_update("/dev/block/bootdevice/by-name/system",package_extract_file("system.transfer.list"),"system.new.dat","system.patch.dat");//args://-blockdevice(orfile)tomodifyin-place......