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


为什么使用apt-get升级代替apt-get dist-upgrade?

, ,

问题描述

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

不过,我最近注意到,我经常收到一条消息,说我的一次升级被阻止。然后我通常运行dist-upgrade来运行它,它工作正常。就阅读什么是“dist-upgrade”,为什么升级超过“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。如果你想要”just work”,你可能需要apt-get dist-upgrade来确保依赖性得到解决。

要扩展为什么要升级而不是dist-upgrade,如果您是系统管理员,则需要可预测性。您可能正在使用诸如apt pinning之类的高级功能,或者从PPAs(也许您拥有in-house PPA)集合中提取各种自动化功能,以检查系统和可用升级,而不是总是热切地升级所有可用软件包。在执行非脚本行为时,您会感到非常沮丧,特别是在导致生产服务停机的情况下。

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及其后的版本,对于那些从Google中找到此内容的用户)使用APT 1.0,它允许命令apt而不是apt-getapt-cache

  • apt-get upgrade不会更改安装的内容(仅限版本),

  • apt-get dist-upgrade将根据需要安装或删除软件包以完成升级,

  • apt upgrade将自动安装但不删除软件包。

  • apt full-upgrade执行与apt-get dist-upgrade相同的功能。

第三种解决方法

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

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

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

第四种方法

用户可能会依赖于由于其他(明确安装)的软件包依赖于它们而隐式安装的软件包。因此,包装系统无法意识到用户/管理员希望保留可能通过dist-upgrade删除的某些功能。

参考资料

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