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

38

Со страницы руководства:

-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...) вообще эквивалентными?

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

Ответы:

35

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

  • (1) -m игнорировать отсутствующие или исправлять отсутствующие пакеты (в отличие от -f сломанных пакетов). Эти параметры являются синонимами одного и того же параметра. (Поскольку, чтобы исправить это игнорирует отсюда, это берет свою собственную странность :-))
  • (2-3) Когда вы устанавливаете / обновляете с apt-get upgradeили с apt-get install somepackage, обычно apt пытается обновить зависимости. Это означает, что некоторые пакеты могут нуждаться в новых или обновленных версиях существующих пакетов и т. Д. В каскаде зависимостей. Если некоторые из этих пакетов отсутствуют или не проходят проверку целостности, кажется, что этот пакет приостанавливается и требует, чтобы вы обрабатывали результат, следуя методу handle требуемого пакета, если это возможно. Часто это останавливает установку этого пакета.
  • (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.

Hastur
источник
36
За это проголосовали, но я, например, не могу понять ни слова.
LondonRob
-1

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

  • Обновить nameserver 8.8.8.8в/etc/resolve.conf
  • Бег sudo apt-get update
Суреш
источник