为什么使用 apt-get upgrade 而不是 apt-get dist-upgrade?

为什么使用 apt-get upgrade 而不是 apt-get dist-upgrade?

我通常使用apt-get update && apt-get upgrade它来运行更新和升级而不是 GUI,因为它似乎运行得更快。

然而,我最近注意到,我经常收到一条消息,说我的升级被阻止了。然后我通常会运行dist-upgrade它,它运行正常。据我所知,在阅读这个问题以及它的答案,dist-upgrade都做了同样的事情,甚至更多。

所以,我的问题是:为什么要使用apt-get upgrade?为什么不一直使用apt-get dist-upgrade?为什么它apt-get upgrade甚至存在?

答案1

我通常使用以下方法升级我的机器:

sudo apt-get update && time sudo apt-get dist-upgrade

以下为摘录man apt-get使用升级遵循规则:在任何情况下都不会删除当前安装的软件包,或者检索和安装尚未安装的软件包。如果这对你来说很重要,请使用apt-get upgrade。如果你希望事情“正常工作”,你可能希望apt-get dist-upgrade确保依赖关系得到解决。

进一步解释你为什么想要升级代替分布式升级如果您是系统管理员,则需要可预测性。您可​​能会使用以下高级功能贴合或者从集合中提取购电协议(也许您有一个内部 PPA),使用各种自动化程序来检查您的系统和可用的升级,而不是总是急切地升级所有可用的软件包。当 apt 执行非脚本行为时,您会非常沮丧,特别是如果这导致生产服务停机。

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.

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. So, dist-upgrade
    command may 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.

答案2

我知道这个问题已经有答案了,而且已经有一年了,但我觉得还是有必要说一下。Ubuntu 14.04 及更高版本(以及 Debian Jessie 及更高版本,对于那些从 Google 找到的人来说)使用 APT 1.0,它允许使用命令apt代替apt-getapt-cache进行某些操作。

  • apt-get upgrade不会改变已安装的内容(仅改变版本),
  • apt-get dist-upgrade将根据需要安装或删除软件包以完成升级,
  • apt upgrade将自动安装但不删除软件包。
  • apt full-upgrade执行与 相同的功能apt-get dist-upgrade

答案3

upgrade选项仅安装系统上已安装的软件包的新版本(是的,内核更新属于它们)。

但是,有时更新会改变依赖项:例如,软件包的新版本将不再依赖于您已安装的库,或者需要安装其他库。此upgrade选项永远不会删除您不再需要的已安装软件包。

但是,该dist-upgrade选项可以“智能地”处理依赖关系系统中的更改。这包括删除不再需要的软件包或解决由于依赖关系更改而引起的软件包之间的冲突。

答案4

用户可能会依赖隐式安装的软件包,因为其他(显式安装的)软件包依赖这些软件包。因此,打包系统无法知道用户/管理员希望保留某些功能,否则这些功能可能会通过 dist-upgrade 删除。

相关内容