由于“哈希和不匹配”错误导致无法下载包列表
当我检查更新时,出现“无法下载存储库信息”错误。
这是详细信息:
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中遇到了同样的问题,下面是我的实践经验:
- 删除
/etc/apt/apt.conf
的代理 - 更改为官方apt sources.list
/etc/apt/sources.list
- 运行
sudo rm -rf /var/lib/apt/lists/*
- 清理包
sudo apt autoremove -y && sudo apt autoclean -y
- 更新和升级。
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y
完成!