Зачем использовать apt-get upgrade вместо apt-get dist-upgrade?

Я обычно использую apt-get update && apt-get upgrade запускать мои обновления и обновления вместо графического интерфейса, потому что он, кажется, работает быстрее.

Однако в последнее время я заметил, что часто получаю сообщение о том, что одно из моих обновлений было отложено. Затем я обычно бегу 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 чтобы убедиться, что зависимости разрешены.

Чтобы подробнее рассказать о том, почему вы хотели бы обновлять вместо удаление-обновление, если вы системный администратор, вам нужна предсказуемость. Возможно, вы используете такие расширенные функции, как удачное закрепление или извлекать из коллекции PPAs (возможно, у вас есть собственный 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 и более поздние версии, для тех, кто нашел это в Google) использует APT 1.0, который позволяет выполнять команду apt вместо apt-get и apt-cache для некоторых операций.

  • apt-get upgrade не изменит то, что установлено (только версии),
  • apt-get dist-upgrade установит или удалит пакеты по мере необходимости для завершения обновления,
  • apt upgrade автоматически установит, но не удалит пакеты.
  • apt full-upgrade выполняет ту же функцию, что и apt-get dist-upgrade.

То upgrade опция устанавливает только новые версии пакетов, которые уже установлены в системе (и да, обновления ядра относятся к ним).

Однако иногда обновления изменяют зависимости: например, новая версия пакета больше не будет зависеть от установленной вами библиотеки или потребует установки дополнительных библиотек. То upgrade опция никогда не удалит установленные пакеты, которые вам больше не нужны.

Однако, в dist-upgrade опция может "разумно" обрабатывать изменения в системе зависимостей. Это включает удаление пакетов, которые больше не нужны, или разрешение конфликтов между пакетами, возникших из-за изменений в зависимостях.

Пользователи, возможно, привыкли полагаться на пакеты, которые были установлены неявно из-за зависимости от них других (явно установленных) пакетов. Таким образом, упаковочная система не может знать о желании пользователя / администратора сохранить определенную функциональность, которая в противном случае могла бы быть удалена с помощью dist-upgrade.

В более новых версиях Ubuntu “sudo apt full-upgrade” выполняет аналогичные действия.