由于出现“哈希总和不匹配”错误,无法下载软件包列表


387

当我检查更新时,出现“无法下载存储库信息”错误。

以下是详细信息:

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.

Answers:


459

只需删除/var/lib/apt/lists目录的所有内容:

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

然后运行:

sudo apt-get update

69
如果删除所有文件,则必须再次下载它们。您可以删除无效文件以加快此过程。
Behrang

9
我也记得Debian也会发生这种情况。解决方案是切换存储库(例如,从us.ubuntu.com切换到XX.ubuntu.com,其中XX是您的国家/地区代码)或等待。最好的主意是稍等片刻,然后再重试。删除列表可能会修复损坏的列表,但是这种情况很少。
f.ardelian

4
这是个老问题,但是在某些发行版(如emdebian)上,执行此操作后,您需要“ mkdir /var/lib/apt/lists/partial”(显然是root用户),否则您将无法apt-get update使用apt。
Archenoth

7
@AlyssaGono,如果它是文件夹,则需要像这样使用递归标志运行rm:sudo rm -R /var/lib/apt/lists/*但是,即使这样做对我也不起作用。
mchid 2014年

2
我们需要前缀-rf,所以它看起来像sudo rm -rf /var/lib/apt/lists/*
Askar,2015年

127

这是一个已知问题,代理缓存之后的客户端会更加严重。一些大型组织和ISP(尤其是在世界偏远地区)具有透明的缓存,您可能不知道它们。

基本问题是,更新镜像时,apt存储库格式会受到竞争条件的影响。此问题特别影响快速变化的存储库,例如开发版本。

您可以在此错误(请在错误中将自己标记为“也影响我”)和此蓝图中跟踪此修复的进度。但是请注意,这是一个复杂的问题,可能需要多个版本才能解决。


4
该蓝图不再可用;这是存档副本
伊利亚·卡根

16
这个错误也存在于Ubuntu 16.04
Scott Stensland'Mar

1
该错误已被标记为“修复已发布”。

我只是将镜像默认值更改为最好的服务器,并且对我来说它的工作。
habibun

99

解决此问题的最简单方法是:

sudo apt-get clean
sudo apt-get update

12
想接受的答案后,我仍然有同样的错误,试图此之后立即解决了该问题
亚历克斯

17
sudo rm -rf /var/lib/apt/lists/*然后这样做sudo apto-get clean也为我解决了这个问题。两者都不是孤立地工作。
2015年

3
不适用于ubuntu 16.04 ...以上评论也无济于事
Scott Stensland

3
sudo apt-get clean并没有帮助16.04,但sudo rm -rf /var/lib/apt/lists/*
已将

2
对我来说,接受的答案不起作用,但是这个答案起作用(Ubuntu 16.04)。
JCasso

52

唯一适用于我的解决方案是unix.stackexchange

发生这种情况是因为它存在一个已知的错误,解决方案是使用不同的压缩方法进行更新,因此文件可以正确加载并且校验和成功。

试试看:

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

(感谢rm部分的评论中的@brook_hong)


9
这是唯一对我有用的解决方案。谢谢。
塞林,2016年

3
它也对我有用。请注意,您不必始终运行此命令。只需运行一次,然后您就可以运行“ apt-get update”而不会出错。
dalf 2016年

2
我尝试使用来自各种论坛的通用解决方案,但这是开箱即用的。谢谢。
wkhwilo

2
在Ubuntu 16.04 / linux mint上为我工作
David Okwii

3
这是唯一对我有用的解决方案,正在使用Ubuntu 16.04
Sunny Shukla

44

删除目录并执行后,我仍然遇到问题sudo apt-get update
只有以下步骤解决了我的问题:

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

我不知道这是否是正确的解决方法...
我在这里找到了解决方案。


13
应该注意,de-part表示德国的服务器,并且该脚本用主服务器替换为本地服务器。对于许多用户来说,以GUI方式转到Software Sources并切换设置将更加安全和可逆。以下内容适用于几乎所有国家/地区:sudo sed -i 's/[a-z][a-z].archive.ubuntu.com/archive.ubuntu.com/g' /etc/apt/sources.list
LiveWireBT 2014年

23

当您的镜像不是最新的或由于错误而导致服务错误时,可能会发生这种情况。您可以稍等片刻然后重试,或者切换到另一个镜像:


2
为什么服务器不是最新的或过载的,会导致具有正确名称的文件成功下载(从某种意义上说,直到发送和接收所有字节后,连接才终止)。(我并不是说不会发生这种情况,我只是希望您能够解释为什么会这样。)
Eliah Kagan 2012年

3
@EliahKagan问题通常不是文件本身已损坏,而是存在一个(我正在简化,但不是太多)数据文件和一个包含数据文件哈希(指纹)的索引文件。当服务器上的存储库更新时(每小时发生一次),另一个文件被更新。现在,当数据文件已更新但索引文件尚未更新(反之亦然)时,您的客户端(apt-get或类似服务器)可能会访问服务器。然后,哈希与数据文件不匹配,并且客户端(错误地)假定数据文件已损坏。
PatrickHäcker2014年

1
当以上答案均无效时,更换镜子对我有用。
芒果

10

如果您是使用代理,然后创建一个名为文件99fixbadproxy/etc/apt/apt.conf.d/

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

99fixbadproxy将其粘贴并保存:

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

现在运行更新命令:

sudo apt-get update

1
哇,我正在尝试所有答案,很奇怪,有多少不同的问题似乎导致相同的症状。
双重

1
我很感谢这个答案
bremen_matt

5

以下命令可以解决您的问题。

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

接着

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

它会解决您的问题。我也遇到了同样的问题,但是以上命令为我解决了这个问题。因此,请尝试一下。

解决方案参考


4
我只是尝试了,但没有成功;第一个apt-get update创建的文件再次位于该目录中的同一位置。
Volker Siegel

3

我遇到了完全相同的问题,使用该终端提供的所有解决方案均无济于事。

对我来说,这是通过进入:

设置→软件和更新→Ubuntu软件:从下载Change LocalMain Server

它开始重新加载存储库并更新。当我输入:

sudo apt-get update

之后,完全没有问题。我正在使用Ubuntu 14.04.4 LTS。


1

我不知道这是否是正确的解决方案,但是我做了以下事情,错误消息消失了:

输入sudo apt-get update终端后,它会给我提供导致错误的某些软件包的名称,然后执行以下操作:

更新管理器(软件更新)→设置→配置软件源→其他软件[选项卡]→取消选中软件包

按下“关闭”底部后,更新管理器开始再次自动检查更新,我看到以下消息:“此计算机上的软件是最新的。最近一次检查是在2秒钟前。”

库本图12.04


这对我有用,这里没有其他解决方案起作用。除非我没有Ubuntu UI(仅在WSL下运行命令行),所以,对于<pkg>发生错误的每个软件包,我都运行了“ sudo apt-get install <pkg>”。我在Ubuntu 16.04上。
Yitz

1

我遇到了完全相同的问题,使用该终端提供的所有解决方案均无济于事。

对我来说,这是通过进入:

设置→软件和更新→其他软件:取消选中所有复选框,然后按关闭。

它开始重新加载存储库并更新。当我输入:

sudo apt-get update

之后,完全没有问题。我正在使用Ubuntu 13.10。


这确实有效,但是它有效地使机器无法安装不是核心版本一部分的软件包(直到稍后重新激活这些复选框)……但有时只是为了实现无错误的apt-get更新是必要的,该更新使安装目标软件包
Scott Stensland '16

1

我遇到了类似的问题,并通过打开应用程序“软件和更新”并在“ Ubuntu软件”选项卡中更改“下载自”的值来解决此问题(在该下拉列表中,尝试选择例如Main服务器(如果不是那样的话)。


是的,只有对我有用的东西。瑞士服务器似乎坏了。
埃里克·莫兰德

1

遵循@ robie-basak,我用作apt-cacher-ng镜像缓存。所以我删除了代理,问题就解决了。

我在文件中删除了代理/etc/apt/apt.conf.d/01proxy

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

然后需要:

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


0

如果您运行的是带有家长控制功能的路由器,而没有将树莓派放入“非托管”列表中,则可能会发生这种情况。对我来说,我可以看到url重定向到由路由器管理的圆形域。

因此,我只是将我的pi添加到了非托管列表中,并且效果很好。


0

我通过运行以下命令解决了所有未安装的软件包:

sudo apt-get install PACKAGENAME

对于每个包。现在已安装它们,并且“哈希总和不匹配”错误已消失。


0

什么都没有为我工作。经过尝试并提出了建议的解决方案之后,最后,我手动下载了损坏的软件包,将它们复制到/ var / cache / apt / archives中,并从/ var / cache / apt / archives / partial中删除了损坏的软件包。


0

我在Ubuntu 18.04中遇到了相同的问题,以下是我的实际经验:

  1. 删除代理 /etc/apt/apt.conf
  2. 更改为官方apt来源 /etc/apt/sources.list
  3. sudo rm -rf /var/lib/apt/lists/*
  4. 清洁包装 sudo apt autoremove -y && sudo apt autoclean -y
  5. 更新和升级。 sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

做完了!


0

对于我来说,这是在Ubuntu 16.04上发生的,没有一个投票最多的解决方案起作用。解决方案是升级软件包:

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

不确定清理旧列表(sudo rm -rf /var/lib/apt/lists/*和/或sudo apt-get clean)是否有帮助!如有必要,请使用它们。


0

20190112#错误#apt#修复#更新无法获取...哈希总和不匹配

  1. 运行apt-get并找出要搜索的关键词/etc/apt
    • $ sudo apt-get -y更新
    • ...
    • 错误:77 http://au.archive.ubuntu.com/ubuntu xenial-updates / multiverse DEP-11 64x64图标
    • 哈希总和不匹配
    • ...
    • 在这种情况下,关键字为“ DEP-11”
  2. /etc/apt树中搜索关键字:
    • $ sudo查找/ etc / apt -type f -exec egrep -in“ DEP-11”“ {}” / dev / null“;”
    • /apt.conf.d/50appstream:1:##此文件由appstreamcli(1)提供,用于下载DEP-11
    • /apt.conf.d/50appstream:6:deb :: DEP-11 {
    • /apt.conf.d/50appstream:9:说明“ $(RELEASE)/ $(COMPONENT)$(NATIVE_ARCHITECTURE)DEP-11元数据”;
    • /apt.conf.d/50appstream:15:#DEP-11中描述的GUI组件的普通大小图标
    • /apt.conf.d/50appstream:17:deb :: DEP-11-icons {
    • /apt.conf.d/50appstream:20:说明“ $(RELEASE)/ $(COMPONENT)DEP-11 64x64 Icons”;
    • /apt.conf.d/50appstream:27:#DEP-11 YAML元数据。
    • /apt.conf.d/50appstream:28:deb :: DEP-11-icons-hidpi {
    • /apt.conf.d/50appstream:31:说明“ $(RELEASE)/ $(COMPONENT)DEP-11 128x128图标”;
  3. 找到违规列表后,请将其移到某个地方,以防万一这不起作用:

    sudo mv -f /apt.conf.d/50appstream /tmp  
    
  4. 清理/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. 尝试立即更新,它现在应该可以工作:

    sudo apt-get -y update  
    
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.