由于“哈希和不匹配”错误导致无法下载包列表

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

这是详细信息:

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. 

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

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

然后运行:

 sudo apt-get update 

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

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

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

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

 sudo apt-get clean sudo apt-get update 

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

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

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

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

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

尝试一下:

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

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

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

  • 我怎样才能使用靠近我的镜子,或选择更快的镜子?

如果你在代理后面,那么在/etc/apt/apt.conf.d/创建一个名为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; 

现在运行update命令:

 sudo apt-get update 

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

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

然后

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

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

解决方案参考

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

对我而言,进入:

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

它开始重新加载repos并进行更新。 当我进入:

 sudo apt-get update 

在那之后,根本没有问题。 我正在使用Ubuntu 14.04.4 LTS。

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

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

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

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

Kubuntu 12.04

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

对我而言,进入:

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

它开始重新加载repos并进行更新。 当我进入:

 sudo apt-get update 

在那之后,根本没有问题。 我正在使用Ubuntu 13.10。

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

跟随@ 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 

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

我的软件和更新部分

如果您运行带有家长控制的路由器,并且没有将您的覆盆子pi放入“非托管”列表,则会发生这种情况。 对我来说,我可以看到url被重定向到由路由器管理的圈子域。

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

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

 sudo apt-get install PACKAGENAME 

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

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

我在Ubuntu 18.04中遇到了同样的问题,下面是我的实践经验:

  1. 删除/etc/apt/apt.conf的代理
  2. 更改为官方apt sources.list /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

完成!