由于“Hash sum mismatch”错误导致无法下载包列表

336

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

这是详细信息:

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.
    
Rob 09.05.2011 - 22:55

17 答案

405

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

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

然后运行:

sudo apt-get update
    
给出答案 Lorem 09.05.2011 - 23:52
121

这是一个已知问题,对于代理缓存背后的客户来说会更加严重。一些大型组织和ISP(特别是在世界偏远地区)拥有透明的缓存,您可能不知道。

根本问题是,更新镜像时,apt存储库格式会受到竞争条件的影响。此问题尤其会影响快速更改的存储库,例如开发版本。

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

    
给出答案 Robie Basak 06.07.2012 - 00:21
79

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

sudo apt-get clean
sudo apt-get update
    
给出答案 realhu 22.05.2015 - 14:25
42

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

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

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

    
给出答案 m13r 27.08.2014 - 21:55
28

对我有用的唯一解决方案来自 unix.stackexchange 。

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

尝试一下:

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

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

    
给出答案 auval 31.05.2016 - 16:13
22

当您的镜像不是最新的或因超载而导致错误时,可能会发生这种情况。您可以等待一段时间再试一次,或者切换到另一个镜像:

给出答案 Jorge Castro 28.04.2012 - 04:04
5

如果您在代理服务器后面,请在 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
    
给出答案 Musaffa 08.08.2016 - 23:37
4

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

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

然后

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

它将解决您的问题。我也面临同样的问题,但上面的命令为我解决了问题。所以试一试。

解决方案参考

    
给出答案 Shaharia Azam 17.12.2013 - 22:47
3

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

对我而言,进入:

设置→软件&更新→Ubuntu软件:从: Change Local 下载到 Main Server

它开始重新加载回购和更新。当我进入:

sudo apt-get update

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

    
给出答案 habibun 28.07.2016 - 11:56
1

我不知道这是否是正确的解决方案,但我做了以下操作并且错误信息消失了:

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

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

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

Kubuntu 12.04

    
给出答案 Hassan.J. 31.03.2014 - 00:03
1

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

对我而言,进入:

设置→软件&更新→其他软件:取消选中所有框并按关闭。

它开始重新加载回购和更新。当我进入:

sudo apt-get update

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

    
给出答案 Paul London 12.07.2014 - 16:30
1

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

    
给出答案 Andrea Pravato 05.08.2014 - 21:59
0

跟随@ 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
    
给出答案 shgnInc 02.03.2016 - 07:14
0

我刚刚安装了Ubuntu 17.10并且在某个存储库中遇到了与Hash Sum Mismatch相同的错误。我转到了软件和Checked Source,如下所示,从终端下载存储库没有任何问题。

    
给出答案 Rahul Soshte 10.12.2017 - 21:24
0

如果您正在运行带有家长控制的路由器,并且未将您的raspberry pi置于"非托管"列表中,则会发生这种情况。对我来说,我可以看到网址被重定向到由路由器管理的圆形域。

所以我只是将我的pi添加到了非托管列表中,它运行正常。

    
给出答案 brad parks 19.02.2018 - 20:51
0

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

sudo apt-get install PACKAGENAME

对于每个包。它们现在已经安装,并且"Hash Sum mismatch"错误已经消失。

    
给出答案 BiggJJ 23.06.2013 - 14:50
0

对我来说没有任何作用。在尝试和建议的解决方案之后,最后,我手动下载了破损的软件包,将它们复制到/ var / cache / apt / archives并从/ var / cache / apt / archives / partial中删除了损坏的软件包。

    
给出答案 Ravi Misra 16.08.2018 - 17:30

阅读有关标签的其他问题