Что делает apt-get --fix-missing и когда это полезно?

Со справочной страницы:

-m, --ignore-missing, --fix-missing  Ignore missing packages; if packages cannot be retrieved or fail the integrity   check after retrieval (corrupted package files), hold back those packages and   handle the result.   Use of this option together with -f may produce an error in some situations. If a   package is selected for installation (particularly if it is mentioned on the   command line) and it could not be downloaded then it will be silently held back.  Configuration Item: APT::Get::Fix-Missing.

Это сбивает с толку:

  1. Как "игнорировать пропущенное" и "исправить пропущенное" могут быть синонимами для одного и того же параметра?
  2. Что означает "сдерживаться" в этом контексте?
  3. Что означает "обрабатывать результат"?

И в какой ситуации это вообще полезно? Когда вы пытаетесь установить пакет, которого нет в индексе apt, вы получаете это сообщение:

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Это два предложения (apt-get update, apt-get install --fix-missing...) вообще эквивалентно?

Хорошо, по порядку:

  • (1) - м игнорировать потерянный или исправить потерянный пакеты (в отличие от -f сломанный пакеты). Эти варианты являются синонимы для того же варианта. (Поскольку, чтобы исправить это, он игнорирует, отсюда он берет свое странность :-) )
  • (2-3) При установке / обновлении с помощью apt-get upgrade или с apt-get install somepackage, обычно apt пытается обновить зависимости. Это означает, что он может обнаружить, что некоторым пакетам требуются новые или обновленные версии существующих пакетов, и так далее в каскаде зависимостей. Если некоторые из этих пакетов отсутствуют или не проходят проверку целостности, похоже, что приостановить этот пакет и хочет, чтобы вы отправились в справляться результат, следующий за способ обработки из требуемого пакета, если это возможно. Часто он прекращает установку этого пакета.
  • (4) С apt-get update вы загружаете то, что необходимо для перестройки списка зависимостей.
    После этого вы можете попробовать apt-get install --fix-missing опять же, в надежде, что обновленный список исправит проблему сам по себе.
    Иногда это может быть очень полезно, например, когда вы добавляете источник для пакетов в свой /etc/atp/sources.list, или когда индексные файлы пакета были обновлены.

Не все программы, которые вы можете использовать в Ubuntu, взяты из официальных репозиториев Ubuntu и обновляются одними и теми же версиями - это редкость.

Более того, существует множество причин, по которым установка может быть внезапно прервана (сигнал завершения, нехватка питания, сбой графического драйвера ...) В таких ситуациях, apt-get update может не сработать, поэтому сначала вам нужно устранить проблему с помощью apt-get install --fix-missing или с некоторыми dpkg команды.

Вы можете видеть apt-get install --fix-missing как легкая и удобная версия команд, таких как dpkg-reconfigure --all или dpkg.

Следующие шаги позволят решить проблему:

  • Обновите nameserver 8.8.8.8 в /etc/resolve.conf
  • Бежать sudo apt-get update

Да, это странно. Я всегда думал, что “–fix-missing” - это синоним -f. Однако поведение должно быть таким же, как у Synaptic: попробуйте обновить только загруженные пакеты.