Ubuntu – Use apt-get upgrade instead of apt-get dist-upgrade


I usually use apt-get update && apt-get upgrade to run my updates and upgrades instead of the GUI because it seems to run more quickly.

However, I've noticed lately that I often get a message that one of my upgrades was held back. I then usually run dist-upgrade to run it through and it works fine. As far as I can tell after reading this question and its answers, dist-upgrade does all the same things and then some.

So, my question is: Why use apt-get upgrade at all? Why not use apt-get dist-upgrade all the time? Why does apt-get upgrade even exist?

Best Answer

  • I typically upgrade my machines with:

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

    Below is an excerpt from man apt-get. Using upgrade keeps to the rule: under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. If that's important to you, use apt-get upgrade. If you want things to "just work", you probably want apt-get dist-upgrade to ensure dependencies are resolved.

    To expand on why you'd want upgrade instead of dist-upgrade, if you are a systems administrator, you need predictability. You might be using advanced features like apt pinning or pulling from a collection of PPAs (perhaps you have an in-house PPA), with various automations in place to inspect your system and available upgrades instead of always eagerly upgrading all available packages. You would get very frustrated when apt performs unscripted behavior, particularly if this leads to downtime of a production service.

        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 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.
  • Related Question