Was macht apt-get --fix-missing und wann ist es sinnvoll?

37

Von der Manpage:

-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.

Das ist verwirrend:

  1. Wie können 'Fehlende ignorieren' und 'Fehlende korrigieren' Synonyme für dieselbe Option sein?
  2. Was bedeutet "Zurückhalten" in diesem Zusammenhang?
  3. Was bedeutet "mit dem Ergebnis umgehen"?

Und in welcher Situation ist es überhaupt nützlich? Wenn Sie versuchen, ein Paket zu installieren, das nicht im apt-Index enthalten ist, erhalten Sie folgende Meldung:

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

Sind die beiden Vorschläge ( apt-get update, apt-get install --fix-missing...) überhaupt gleichwertig?

Steve Bennett
quelle
Ja, es ist komisch. Ich habe immer gedacht, das --fix-missingist das Synonym für -f. Das Verhalten sollte jedoch mit dem von Synaptic identisch sein: Versuchen Sie, nur heruntergeladene Pakete zu aktualisieren.
Danatela

Antworten:

34

Ok, um:

  • (1) -m ignoriert fehlende oder repariert fehlende Pakete (im Gegensatz zu -f defekten Paketen). Diese Optionen sind Synonyme für dieselbe Option. (Da es von hier aus ignoriert, um es zu beheben, braucht es seine eigene Verrücktheit :-))
  • (2-3) Wenn Sie mit apt-get upgradeoder mit installieren / aktualisieren apt-get install somepackage, versucht apt normalerweise, Abhängigkeiten zu aktualisieren. Dies bedeutet, dass bei einigen Paketen möglicherweise neue oder aktualisierte Versionen vorhandener Pakete usw. erforderlich sind, was zu einer Kaskade von Abhängigkeiten führt. Wenn einige dieser Pakete fehlen oder die Integritätsprüfung fehlschlagen, so scheint es zu suspendieren dieses Paket, und möchte , dass Sie gehen zu behandeln das Ergebnis nach dem Griff Methode des erfordern Paket, wenn möglich. Häufig wird die Installation dieses Pakets abgebrochen.
  • (4) apt-get updateLaden Sie mit, was zum Neuerstellen der Liste der Abhängigkeiten erforderlich ist.
    Danach können Sie es apt-get install --fix-missingerneut versuchen , in der Hoffnung, dass die aktualisierte Liste das Problem von selbst behebt.
    Dies kann manchmal sehr nützlich sein, wenn Sie beispielsweise eine Quelle für Pakete in Ihrem hinzufügen /etc/atp/sources.listoder wenn die Paketindexdateien aktualisiert wurden.

Nicht alle Programme, die Sie unter Ubuntu verwenden können, stammen aus den offiziellen Ubuntu-Repositories und werden mit denselben Versionen aktualisiert - dies ist selten.

Darüber hinaus gibt es viele Gründe, warum eine Installation abrupt unterbrochen werden kann (ein Kill-Signal, ein Stromausfall, ein Ausfall des Grafiktreibers ...). In solchen Situationen apt-get updatefunktioniert dies möglicherweise nicht. Sie müssen das Problem also zuerst mit apt-get install --fix-missingoder mit beheben einige dpkg Befehle.

Sie können apt-get install --fix-missingals eine leichte und freundliche Version von Befehlen wie dpkg-reconfigure --alloder sehen dpkg.

Hastur
quelle
36
Dies wurde heftig befürwortet, aber ich kann kein Wort davon verstehen.
LondonRob
-1

Die folgenden Schritte lösen das Problem:

  • Aktualisieren Sie die nameserver 8.8.8.8in/etc/resolve.conf
  • Lauf sudo apt-get update
Suresh
quelle