使用Software Updater是否与运行apt-get更新和apt-get升级相同?


Answers:


21

简短答案

不,他们不一样。apt-get upgrade不能处理版本之间的依赖关系更改,因此,如果程序包更改了依赖关系,则不会升级(将“保留”)。有关更多详细信息,请参见详细答案。

使用Software Updater和使用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不会升级。


1
您能解释一下为什么在Software Updater 不再需要root密码来更新现有软件包时(即,仅apt-get upgrade在需要时)apt-get不能这样做吗?似乎两者之间还有其他根本不同的地方。
Jonathan Y.

4

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

sudo apt-get update && sudo apt-get upgrade 会告诉您某些软件包已被保留。

使用Software Updater可以使一切变得无缝,并且您不会看到任何阻碍。


3

随着apt可用的,分阶段的更新由pabouk提到)正在更新之间与软件更新程序和命令行的最显着的区别。

如今,该apt实用程序(已发布该问题时不存在,但如果存在的话,很可能已包含在该问题中)apt-get成为升级软件包的一种越来越受欢迎的替代方法。它们是相似的:同一包(也称为apt既提供,又提供所有apt功能,传统apt-实用程序也可以提供,尽管在某些情况下,您必须传递特殊的配置选项。但是aptapt-get离软件更新器更近。与软件更新程序一样,当新版本的现有软件包将它们声明为依赖项时,它也能够安装新软件包sudo apt upgrade

因此,如今,关注此区别的用户可以直接运行,sudo apt upgrade而不是sudo apt-get upgrade希望自动安装新的依赖项。因此,Software Updater的功能是稍微延迟一些更新,以确定它们在野外是否稳定如果不稳定,则限制损坏,这现在可能是使用Software Updater和在命令行上进行更新之间的主要区别。

软件更新程序的此行为归因于分阶段更新策略。自从引入该策略以来,该策略(在Software Updater中实现,但未在apt-get(或apt)中实现)一直是两种方法之间的主要区别,而pabouk在几年前对此进行了评论

还有另一个区别:apt-get不使用PhasedUpdates,因此有时Software Updater显示的更新少于apt-get。请参阅为什么软件更新程序说没有可用的更新,但apt-get升级显示有可用的更新?

pabouk 2015年 2月25日在7:34

这可能一直是最重要的区别,sudo apt-get dist-upgrade因为面对该upgrade操作不愿意安装新软件包或卸载现有软件包的情况,总是可以运行该软件包。但是,从命令行进行更新时,分阶段更新的相对重要性随着apt以下因素而增加:

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

除了(a)偏爱图形界面和(b)其桌面集成在更新可用时提供通知外,当前的主要原因可能是使用Software Updater,这是参与分阶段更新的最简单方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.