使用软件更新程序与运行 apt-get update 和 apt-get upgrade 是一样的吗?

使用软件更新程序与运行 apt-get update 和 apt-get upgrade 是一样的吗?

这似乎应该是真的,但我想确认一下。谢谢!

答案1

简短回答

不,它们不一样。apt-get upgrade不处理版本之间依赖关系的变化,因此如果包的依赖关系发生变化,它将不会被升级(它将被“阻止”)。有关更多详细信息,请参阅长答案。

使用软件更新程序和使用sudo apt-get update ; sudo apt-get dist-upgrade(注意dist-)几乎是等效的,只不过一个显然是 GUI,另一个是控制台应用程序,并且还有一些非常细微的信息差异。


长答案

man apt-get

  • apt-get upgrade

    upgrade
               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-get dist-upgrade

    dist-upgrade
           dist-upgrade in addition to performing the function of upgrade,
           also intelligently handles changing dependencies with new versions
           of packages; apt-get has a "smart" conflict resolution system, and
           it will attempt to upgrade the most important packages at the
           expense of less important ones if necessary. The dist-upgrade
           command may therefore remove some packages. The
           /etc/apt/sources.list file contains a list of locations from which
           to retrieve desired package files. See also apt_preferences(5) for
           a mechanism for overriding the general settings for individual
           packages.

    (我强调)

    这意味着使用此命令而不是upgrade,可以升级具有新的(或删除的)依赖项的软件包。

例子

两者之间的区别的一个很好的例子是当一个新的 Linux 内核发布时。这将被打包到linux-image-generic始终依赖于 Linux 内核的最新软件包的软件包中。由于依赖项会linux-image-generic随着每次内核升级而变化,因此upgrade不会对其进行升级。

答案2

几乎一样,但并不完全一样。例如,当提供内核更新时,sudo apt-get update && sudo apt-get dist-upgrade需要获取这些更新。

sudo apt-get update && sudo apt-get upgrade会告诉您有些包裹已被扣留。

使用软件更新程序可以使一切变得无缝,你不会看到任何阻碍。

答案3

有了apt可用的,分阶段更新pabouk 提及) 是使用软件更新程序和命令行更新之间最显著的区别。

如今,apt效用——不存在当这个问题被发布时,但是可能会被纳入问题中,如果它有--是一种越来越受欢迎的替代品apt-get用于升级软件包。它们类似:同一个包(也叫apt提供,并且一切都apt可以做到,传统的apt-实用程序也可以做到,尽管在某些情况下,您必须传递特殊的配置选项。但比软件更新程序apt更接近apt-get。与软件更新程序一样,sudo apt upgrade能够安装新软件包当现有包的新版本将它们声明为依赖项时。

因此,如今,如果用户希望自动安装新的依赖项,那么他们只需运行即可。因此,软件更新程序稍微延迟某些更新的功能sudo apt upgradesudo apt-get upgrade确定它们是否稳定在野外,如果没有,限制损害,现在可能是主要的使用软件更新程序和在命令行上更新之间的区别。

软件更新程序的这种行为是由于分阶段更新政策. 该政策在软件更新程序中实施但不是在apt-get(或apt)——从那时起,这两种方法之间就有一个主要区别该政策出台, 和pabouk 评论几年前

还有一个区别:apt-get不使用分阶段更新因此有时软件更新程序显示的更新apt-get为什么软件更新程序说没有可用的更新,但 apt-get upgrade 显示有可用的更新?

帕布克 2015 年 2 月 25 日 7:34

这可能一直是最显著的区别,因为sudo apt-get dist-upgradeupgrade操作不愿意安装新包或卸载现有包时,人们总是可以运行。然而,当从命令行更新时,相对的分阶段更新的重要性随着以下因素而增加apt

  • 例如,如果使用软件更新程序,即使由于分阶段更新策略导致更新延迟,apt-get该命令也会下载并安装更新。apt
  • 不像 apt-getapt命令的upgrade操作将要安装以前未安装但作为新软件包版本依赖项所需的新软件包。

在旁边从 (a) 更喜欢图形界面和 (b) 它的桌面集成在有更新时提供通知,人们使用软件更新程序的主要原因是它是参与分阶段更新的最简单方法。

相关内容