我有一个在学校维护的镜像服务器。
$ uname -a Linux CSE-Cloud01 4.0.0-1-amd64 #1 SMP Debian 4.0.2-1(2015-05-11)x86_64 GNU/Linux
$ sudo apt-get 更新
......
W: Failed to fetch http:// mirror.cs.nchu.edu.tw/debian/dists/jessie/main/source/Sources Hash Sum mismatch
W: Failed to fetch http:// mirror.cs.nchu.edu.tw/debian/dists/jessie/main/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http:// mirror.cs.nchu.edu.tw/debian/dists/jessie/non-free/binary-amd64/Packages Hash Sum mismatch
W: Failed to fetch http:// mirror.cs.nchu.edu.tw/debian/dists/jessie/main/i18n/Translation-en Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.
在镜像本身或我的一些机器上,它最终失败了。(有些工作正常。)我曾尝试执行下面推荐的命令,但没有效果
$ apt-get clean
$ rm -rf /var/cache/apt/*
$ rm -rf /var/lib/apt/lists/*
$ apt-get update
我在网上找不到其他解决方案。有人知道如何解决这个问题吗?
答案1
如果删除/var/lib/apt/lists/*
不起作用...
(特别是如果你使用了代理),像这样修复“哈希值不匹配”:
创建文件
/etc/apt/apt.conf.d/99fixbadproxy
有此内容
Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy true;
也可以看看这里
答案2
我遇到了类似的问题,这似乎是镜子上的问题。
就像声明的那样这里删除服务器上的“InRelease”文件并重试。
在 /debian/dists/jessie 目录中有一个名为 InRelease 的文件。它的日期比其他文件早几个月(大多数文件的日期都是今天的日期)。
答案3
在这种情况下,问题总是在于文件夹中显示的哈希值InRelease
和文件之间的差异。Release
dist/[name-of-your-distro]/
这些文件用于验证其他类似文件Packages.xz
是否未被更改。当哈希值不匹配时,您会收到错误。不幸的是,重新哈希并写入新值是不够的,因为您还需要使用*Release
您不拥有的私钥对这两个文件进行签名……这是一项非常繁琐的工作。
就我而言,我通过删除发布文件解决了该问题(首先只是使用本地下载的镜像):
rm dist/[name-of-your-distro]/*Release*
并在 APT 源中与此 repo 对应的行中添加一个信任开关:
deb [trusted=yes] file:/path/to/your/local/mirror/ubuntu xenial main
注意[信任=是]
希望这会有所帮助,甚至在将来帮助我:)
答案4
我在从 wheezy 升级到 jessie 时遇到了这样的问题。解决方案是暂时删除 xz-utils 包。由于 apt 版本过旧,Wheezy 无法管理 .xz 包列表。
apt-get remove xz-utils
apt-get update
apt-get upgrade
apt-get install xz-utils