为什么使用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甚至存在?

我通常用以下方式升级我的机器

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

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

要扩展您希望升级而不是升级的原因 ,如果您是系统管理员,则需要具有可预测性。 您可能正在使用apt固定或拉取PPA集合等高级function(可能您有内部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. 

我知道这个问题已经回答并且已经有一年了,但我觉得这需要说。 Ubuntu 14.04及更高版本(以及Debian Jessie及后来,对于那些从谷歌发现这一点的人)使用APT 1.0,它允许命令apt而不是apt-getapt-cache进行某些操作。

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

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

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

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

用户可能已经开始依赖于隐式安装的软件包,因为其他(显式安装的)软件包依赖于它们。 因此,包装系统不能意识到用户/管理员希望保留可能通过dist-upgrade移除的某些function。

Win-Home用户总是“dist-upgrade”不应该是一个问题,但如果你正在运行复杂的系统,你最好“永远(真的)改变正在运行的系统”……即使“应该”也没有问题,“可以”成为probs – 什么会削减你! 应该是有权决定的人;-)