¿Qué hace apt-get --fix-missing y cuándo es útil?

38

Desde la página del manual:

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

Esto es confuso:

  1. ¿Cómo pueden 'ignorar faltante' y 'corregir faltante' ser sinónimos de la misma opción?
  2. ¿Qué significa 'retener' en este contexto?
  3. ¿Qué significa "manejar el resultado"?

¿Y en qué situación es útil de todos modos? Cuando intenta instalar un paquete que no está en el índice de apt, aparece este mensaje:

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

¿Las dos sugerencias ( apt-get update, apt-get install --fix-missing...) son equivalentes?

Steve Bennett
fuente
Sí, es raro. Siempre pensé que ese --fix-missinges el sinónimo de -f. Sin embargo, el comportamiento debe ser el mismo que el de Synaptic: intente actualizar solo los paquetes descargados.
Danatela

Respuestas:

35

Ok, en orden:

  • (1) -m ignorar faltante o punto de referencia que faltan paquetes (en contraposición a -F rotos paquetes). Estas opciones son sinónimos de la misma opción. (Dado que para solucionarlo se ignora desde aquí, toma su propia rareza :-))
  • (2-3) Cuando instala / actualiza con apt-get upgradeo con apt-get install somepackage, generalmente apt intenta actualizar las dependencias. Esto significa que puede encontrar que algunos paquetes necesitan versiones nuevas o actualizadas de paquetes existentes, y así sucesivamente en una cascada de dependencias. Si faltan algunos de esos paquetes o fallan la verificación de integridad, parece suspender este paquete y desea que maneje el resultado siguiendo el método de manejo del paquete requerido, si es posible. A menudo deja de instalar este paquete.
  • (4) Con apt-get updateusted descarga lo que se necesita para reconstruir la lista de dependencias.
    Después de eso, puede volver apt-get install --fix-missinga intentarlo , con la esperanza de que la lista actualizada solucione el problema por sí misma.
    Esto puede ser muy útil a veces, como cuando agrega una fuente para paquetes en su /etc/atp/sources.list, o cuando los archivos de índice de paquetes se han actualizado.

No todos los programas que puede usar en Ubuntu provienen de los repositorios oficiales de Ubuntu y se actualizan con las mismas versiones; esto es raro.

Además, hay muchas razones por las que una instalación puede interrumpirse abruptamente (una señal de apagado, una falta de energía, una falla del controlador gráfico ...) En esas situaciones, apt-get updatepuede no funcionar, por lo que primero debe solucionar el problema con apt-get install --fix-missingo con algunos dpkg comandos

Puedes verlo apt-get install --fix-missingcomo una versión ligera y amigable de comandos como dpkg-reconfigure --allo dpkg.

Hastur
fuente
36
Esto ha sido muy votado pero yo, por mi parte, no puedo entender ni una palabra.
LondonRob
-1

Los siguientes pasos resolverán el problema:

  • Actualiza el nameserver 8.8.8.8en/etc/resolve.conf
  • correr sudo apt-get update
Suresh
fuente