当前位置: 首页>>技术教程>>正文


使用软件更新程序是否与运行 apt-get 更新和 apt-get 升级相同?

,

问题描述

看起来这应该是真的,但我想确定一下。谢谢!

最佳答案

简答

不,它们不一样。 apt-get upgrade 不处理版本之间不断变化的依赖关系,所以如果一个包改变了依赖关系,它不会被升级(它将是 “held back”)。有关更多详细信息,请参阅长答案。

使用软件更新程序和使用 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.

    (我强调)

    这意味着具有旧版本中不需要的新依赖项的较新版本包将不会使用此方法升级(除非已经安装了新依赖项)。这些将显示为 “Held back”。

  • 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 不会升级它。

次佳答案

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

sudo apt-get update && sudo apt-get upgrade 会告诉你一些包被阻止了。

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

第三种答案

apt 可用的情况下,phased updates ( mentioned by pabouk ) 是使用软件更新程序和命令行进行更新之间最显著的区别。

如今,apt 实用程序——在发布此问题时为 didn’t exist,但如果有的话,很可能会包含在问题中——越来越流行替代 apt-get 来升级软件包。它们很相似: same package (也称为 apt ) provides bothapt 可以做的一切,传统的 apt- 实用程序也可以,尽管在某些情况下您必须传递特殊的配置选项。但是 aptapt-get 更接近软件更新程序。与软件更新程序一样,当现有包的新版本将它们声明为依赖项时,sudo apt upgrade 就是 capable of installing new packages

所以现在,如果用户希望自动安装新的依赖项,那么关心这种区别的用户可以只运行 sudo apt upgrade 而不是 sudo apt-get upgrade。因此,软件更新程序稍微延迟某些更新的功能(to determine if they are stable 处于正常状态并限制损坏(如果不是),现在可能是使用软件更新程序和在 命令行 上更新之间的主要区别。

软件更新程序的这种行为是由于 phased updates policy 。自几年前 the policy was introducedpabouk commented 以来,该策略 – 在软件更新程序中实现但不在 apt-get(或 apt )中实现 – 一直是这两种方法之间的主要区别:

There is another difference: apt-get does not use PhasedUpdates so sometimes Software Updater shows less updates than apt-get. See Why Does Software Updater Say No updates Available, but apt-get upgrade Shows updates available?.

pabouk Feb 25 ’15 at 7:34

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

  • apt-get 一样,apt 命令将下载和安装更新,即使如果使用软件更新程序,它们会因分阶段更新策略而延迟。

  • 但与 apt-get 不同,apt 命令的 upgrade 操作将安装以前未安装但需要作为新软件包版本的依赖项的新软件包。

除了 (a) 更喜欢图形界面和 (b) 其桌面集成在更新可用时提供通知之外,目前使用软件更新程序的主要原因是它是参与分阶段更新的最简单方法。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12233.html,未经允许,请勿转载。