Problemas para descargar la lista de paquetes debido a un error de "Falta de coincidencia de suma hash"

389

Cuando busco actualizaciones, aparece el error "No se pudo descargar la información del repositorio".

Esto es lo que aparece debajo de los detalles:

W: Failed to fetch gzip:/var/lib/apt/lists/partial/us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources  Hash Sum mismatch, 
E: Some index files failed to download. They have been ignored, or old ones used instead.
Robar
fuente

Respuestas:

461

Simplemente elimine todo el contenido del /var/lib/apt/listsdirectorio:

sudo rm -rf /var/lib/apt/lists/*

entonces corre:

sudo apt-get update
Lorem
fuente
69
Si elimina todos los archivos, debe descargarlos nuevamente. Simplemente puede eliminar el archivo no válido para acelerar este proceso.
Behrang
99
Recuerdo que esto también sucedió con Debian. La solución fue cambiar los repositorios (por ejemplo, de us.ubuntu.com a XX.ubuntu.com donde XX es el código de su país) o esperar. La mejor idea sería esperar un poco y volver a intentarlo más tarde. Eliminar las listas puede arreglar las listas rotas, pero ese rara vez es el caso.
f.ardelian
44
Antigua pregunta, pero en algunas distribuciones (como emdebian), después de hacer esto necesitará " mkdir /var/lib/apt/lists/partial" (Como root, obviamente), o de lo contrario no podrá " apt-get update" o usar apt de otra manera.
Archenoth
77
@AlyssaGono si es una carpeta, debe ejecutar rm con la bandera recursiva de esta manera: sudo rm -R /var/lib/apt/lists/*sin embargo, incluso hacer eso no funcionó para mí.
mchid
2
Necesitamos el prefijo -rf , por lo que se verá comosudo rm -rf /var/lib/apt/lists/*
Askar
127

Este es un problema conocido y se exacerba para los clientes detrás de los cachés de proxy. Algunas grandes organizaciones e ISP (especialmente en partes remotas del mundo) tienen cachés transparentes de los cuales puede no estar al tanto.

El problema fundamental es que el formato de repositorio apto está sujeto a condiciones de carrera cuando se actualiza un espejo. Este problema afecta particularmente a los repositorios que cambian rápidamente, como la versión de desarrollo.

Puede seguir el progreso de la solución para esto en este error (marque usted mismo como "también me afecta" en el error) y este plano . Pero tenga en cuenta que es un problema complejo y puede tomar más de una versión para resolver.

Robie Basak
fuente
44
Ese plano ya no es accesible; Aquí hay una copia archivada .
Eliah Kagan
16
este error también existe en ubuntu 16.04
Scott Stensland
1
El error se ha marcado como "Reparado liberado".
Solo cambio el valor predeterminado de mi espejo al mejor servidor y funciona para mí.
habibun
99

La forma más fácil de solucionar esto es:

sudo apt-get clean
sudo apt-get update
realhu
fuente
12
Después de probar la respuesta aceptada, todavía tenía los mismos errores, intentarlo inmediatamente después solucionó el problema
Alex
17
Haciendo sudo rm -rf /var/lib/apt/lists/*entonces sudo apto-get cleansolucionado el problema para mí también. Ninguno de los dos trabajó de forma aislada.
Cam
3
no ayuda en ubuntu 16.04 ... tampoco ayuda el comentario anterior
Scott Stensland
3
sudo apt-get cleanno ayudó con 16.04, pero lo sudo rm -rf /var/lib/apt/lists/*arregló
sdaffa23fdsf
2
Para mí, la respuesta aceptada no funcionó, pero esta funcionó (Ubuntu 16.04).
JCasso
54

La única solución que funcionó para mí es de unix.stackexchange .

Ocurre porque hay un error conocido que es apto, y la solución es actualizar con un método de compresión diferente, de modo que los archivos se carguen correctamente y la suma de verificación tenga éxito.

Prueba esto:

sudo rm -rf /var/lib/apt/lists/partial
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz

(Gracias @brook_hong de los comentarios para la parte rm)

Amir Uval
fuente
99
Esta es la única solución aquí que funcionó para mí. Gracias.
Cerin
3
A mí también me funcionó. Tenga en cuenta que no siempre tiene que ejecutar este comando. Simplemente ejecútelo una vez, y luego puede ejecutar "apt-get update" sin error.
dalf
2
Intenté usar la solución genérica de varios foros, pero esto funciona de inmediato. Gracias.
wkhwilo
2
Trabajó para mí en Ubuntu 16.04 / linux mint
David Okwii
3
Esta es la única solución que funcionó para mí, estoy usando Ubuntu 16.04
Sunny Shukla
44

Todavía tenía el problema después de eliminar los directorios y hacer sudo apt-get update.
Solo el siguiente paso resolvió mi problema:

sudo sed -i -re 's/\w+\.archive\.ubuntu\.com/archive.ubuntu.com/g' /etc/apt/sources.list

No sé si esta es la forma correcta de solucionarlo ...
He encontrado la solución aquí .

m13r
fuente
13
Se debe tener en cuenta que de-part indica un servidor para Alemania y que este script reemplaza al servidor local con el servidor principal. Ir a Fuentes de software a través de la GUI y cambiar la configuración allí sería más seguro y reversible para muchos usuarios. Lo siguiente debería funcionar para casi todos los países:sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
LiveWireBT
23

Esto puede suceder cuando su espejo no está actualizado o cuando se publican errores por sobrecarga. Puede esperar un momento e intentarlo de nuevo, o cambiar a otro espejo:

Jorge Castro
fuente
2
¿Por qué un servidor que no está actualizado o está sobrecargado hace que un archivo con el nombre correcto se descargue correctamente (en el sentido de que la conexión no termina hasta que se envían y reciben todos los bytes), pero se daña? (No estoy afirmando que eso no suceda, solo espero que puedas explicar por qué sucede).
Eliah Kagan
3
@EliahKagan El problema normalmente no es que el archivo en sí esté dañado, sino que hay un archivo de datos (estoy simplificando pero no demasiado) y un archivo de índice que contiene el hash (huella digital) del archivo de datos. Cuando los repositorios se actualizan (sucede cada hora) en el servidor, un archivo después del otro se actualiza. Ahora puede suceder que su cliente (apt-get o similar) acceda al servidor cuando el archivo de datos se haya actualizado pero el archivo de índice aún no se haya actualizado (o viceversa). Luego, el hash no coincide con el archivo de datos y el cliente (falsamente) supone que el archivo de datos está dañado.
Patrick Häcker
1
Cambiar el espejo funcionó para mí cuando ninguna de las respuestas anteriores lo hizo.
mango
10

Si estás detrás de un proxy, a continuación, crear un archivo con el nombre 99fixbadproxyde /etc/apt/apt.conf.d/:

sudo gedit /etc/apt/apt.conf.d/99fixbadproxy

Pegue esto 99fixbadproxyy guárdelo:

Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy    true;

Ahora ejecute el comando de actualización:

sudo apt-get update
Musaffa
fuente
1
Wow, estaba intentando cada respuesta, es extraño cuántos problemas diferentes parecen dar lugar al mismo síntoma.
Dualed
1
Estoy muy en deuda con esta respuesta
bremen_matt
5

Los siguientes comandos pueden resolver su problema.

sudo rm -R /var/lib/apt/lists/partial/*

y entonces

sudo apt-get update && sudo apt-get upgrade

Resolverá tu problema. También enfrenté el mismo problema, pero los comandos anteriores me resolvieron el problema. Así que pruébalos.

Referencia de la solución

Shaharia Azam
fuente
44
Acabo de intentarlo y no funcionó; Los primeros apt-get updatearchivos creados en el mismo lugar nuevamente en ese directorio.
Volker Siegel el
3

Tuve exactamente el mismo problema y todas las soluciones proporcionadas usando el terminal no ayudaron.

Para mí, fue entrando en:

Configuración → Software y actualizaciones → Software de Ubuntu: Descargar de: Change Locala Main Server.

Comienza a recargar los repositorios y a actualizarse. Cuando entro:

sudo apt-get update

Después de eso, no hubo ningún problema en absoluto. Estoy usando Ubuntu 14.04.4 LTS.

habibun
fuente
1

No sé si es la solución adecuada o no, pero hice lo siguiente y el mensaje de error desapareció:

Después de escribir sudo apt-get updateen la terminal, me da los nombres de algunos paquetes que causan el error y luego hice lo siguiente:

Administrador de actualizaciones (actualización de software) → Configuración → Configurar fuentes de software → Otro software [pestaña] → Desmarque los paquetes

Después de presionar el botón "cerrar", el administrador de actualizaciones comenzó a buscar actualizaciones automáticamente y vi este mensaje: "el software de esta computadora está actualizado. La última vez que lo revisé hace 2 segundos".

Kubuntu 12.04

Hassan.J.
fuente
Esto funcionó para mí, y ninguna otra solución publicada aquí funcionó. Excepto que no tengo la interfaz de usuario de Ubuntu (ejecutando la línea de comandos solo bajo WSL), por lo tanto, para cada paquete <pkg>donde ocurrió el error, ejecuté `sudo apt-get install <pkg> '. Estoy en Ubuntu 16.04.
Yitz
1

Tuve exactamente el mismo problema y todas las soluciones proporcionadas usando el terminal no ayudaron.

Para mí, fue entrando en:

Configuración → Software y actualizaciones → Otro software: desmarque todas las casillas y presione cerrar.

Comienza a recargar los repositorios y a actualizarse. Cuando entro:

sudo apt-get update

Después de eso, no hubo ningún problema en absoluto. Estoy usando Ubuntu 13.10.

Paul London
fuente
Esto funciona, sin embargo, efectivamente impide que la máquina pueda instalar paquetes que no forman parte de la compilación central (hasta que esas casillas de verificación se reactiven más tarde) ... pero a veces es necesario solo para lograr una actualización de apt-get sin errores que permita instalación de paquetes específicos
Scott Stensland
1

Tuve un problema similar y lo resolví abriendo la aplicación "Software y actualizaciones" y, en la pestaña "Software de Ubuntu", cambiando el valor de "Descargar desde" (en esa lista desplegable, intente seleccionar, por ejemplo, Principal Servidor si no fuera así).

Andrea Pravato
fuente
Sí, lo único que funcionó para mí. El servidor de Suiza parece roto.
Eric MORAND
1

Como seguí a @ robie-basak, utilicé apt-cacher-ngcomo caché de espejo. Entonces eliminé el proxy y el problema se resolvió.

Elimino el proxy en el archivo /etc/apt/apt.conf.d/01proxy:

#Acquire::http::Proxy "http://xxx.xx.xx.xx:4321";

Entonces necesita:

sudo rm -rf /var/lib/apt/lists/*
sudo aptitude update
sudo aptitude upgrade
shgnInc
fuente
1

Recientemente instalé Ubuntu 17.10 y recibí el mismo error de Hash Sum Mismatch para algunos repositorios. Fui a Software and Checked Source como se muestra a continuación y no hubo más problemas para descargar el repositorio desde el terminal.

Mi sección de software y actualizaciones

Rahul Soshte
fuente
0

Esto puede suceder si está ejecutando un enrutador con control parental y no ha colocado su raspberry pi en una lista "no administrada". Para mí, pude ver que la url estaba redirigiendo a un dominio circular, administrado por el enrutador.

Así que acabo de agregar mi pi a la lista no administrada, y funcionó bien.

parques de brad
fuente
0

He resuelto todos los paquetes que no se instalan ejecutando este comando:

sudo apt-get install PACKAGENAME

Para cada uno de los paquetes. Ahora están instalados y el error "Hash Sum discordancia" ha desaparecido.

BiggJJ
fuente
0

Nada me funcionó. Después de probar y las soluciones sugeridas, finalmente, descargué los paquetes rotos manualmente, los copié en / var / cache / apt / archives y eliminé los paquetes rotos de / var / cache / apt / archives / partial.

Ravi Misra
fuente
0

Enfrenté el mismo problema en mi Ubuntu 18.04, a continuación se muestra mi experiencia práctica:

  1. Eliminar el proxy en /etc/apt/apt.conf
  2. Cambiar a fuentes oficiales apt.list /etc/apt/sources.list
  3. correr sudo rm -rf /var/lib/apt/lists/*
  4. Paquetes limpios sudo apt autoremove -y && sudo apt autoclean -y
  5. Actualización y actualización. sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

¡Hecho!

JsonBruce
fuente
0

Esto me sucedió en Ubuntu 16.04, y ninguna de las soluciones más votadas funcionó. La solución fue actualizar los paquetes:

sudo apt-get update    # this will fail
sudo apt-get upgrade
sudo apt-get update    # this will succeed

¡No estoy seguro si limpiar listas antiguas ( sudo rm -rf /var/lib/apt/lists/*y / o sudo apt-get clean) ayudó o no! Úselos si es necesario.

Mohammad Dehghan
fuente
0

20190112 #Errors #apt #Fix #Updates Error al recuperar ... Hash Sum no coincide

  1. Ejecute apt-get y descubra qué palabras clave buscar en /etc/apt:
    • $ sudo apt-get -y actualización
    • ...
    • Err: 77 http://au.archive.ubuntu.com/ubuntu xenial-updates / multiverse DEP-11 64x64 iconos
    • Hash Sum desajuste
    • ...
    • En este caso, la palabra clave es "DEP-11"
  2. Busque en el /etc/aptárbol las palabras clave:
    • $ sudo find / etc / apt -type f -exec egrep -in "DEP-11" "{}" / dev / null ";"
    • /apt.conf.d/50appstream:1:## Este archivo es proporcionado por appstreamcli (1) para descargar DEP-11
    • /apt.conf.d/50appstream:6: deb :: DEP-11 {
    • /apt.conf.d/50appstream:9: Descripción "$ (RELEASE) / $ (COMPONENT) $ (NATIVE_ARCHITECTURE) DEP-11 Metadata";
    • /apt.conf.d/50appstream:15: # Iconos de tamaño normal para componentes GUI descritos en el DEP-11
    • /apt.conf.d/50appstream:17: deb :: DEP-11-icons {
    • /apt.conf.d/50appstream:20: Descripción "$ (RELEASE) / $ (COMPONENT) DEP-11 64x64 Iconos";
    • /apt.conf.d/50appstream:27: # los metadatos YAML DEP-11.
    • /apt.conf.d/50appstream:28: deb :: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31: Descripción "$ (RELEASE) / $ (COMPONENT) DEP-11 128x128 Iconos";
  3. Después de encontrar la lista ofensiva, muévala a algún lugar por si esto no funciona:

    sudo mv -f /apt.conf.d/50appstream /tmp  
    
  4. Limpiar /var/lib/apt:

    sudo apt-get -y clean  
    sudo rm -rf /var/lib/apt/lists/*  
    sudo find /var/lib/apt -type d -name "partial" -exec rm -rf "{}" ";"  
    
  5. Intenta actualizar ahora, debería funcionar ahora:

    sudo apt-get -y update  
    
Malcolm Boekhoff
fuente