Debian APT软件包哈希校验和不匹配

42

在Debian命令行中,执行aptitude update; aptitude upgrade后,我遇到了哈希总和不匹配的问题。下面是命令行输出。我尝试过aptitude clean,但这似乎没有帮助。我也进行了一些谷歌搜索,但没有什么帮助。我几天来一直收到不匹配错误。

感谢任何帮助。


Resolving dependencies...
open: 405; closed: 880; defer: 58; conflict: 78.
The following packages will be upgraded:
  apache2.2-bin apt-utils aptdaemon aptdaemon-data avahi-daemon bind9-host dnsutils ekiga gir1.2-cogl-1.0 gir1.2-coglpango-1.0 gstreamer0.10-alsa gstreamer0.10-ffmpeg
  gstreamer0.10-plugins-base gstreamer0.10-x host libapt-inst1.5 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-core7 libavahi-glib1 libavahi-gobject0
  libavahi-ui-gtk3-0 libavahi-ui0 libavutil51 libbind9-80 libcapi20-3 libcogl-common libcogl9 libdbus-glib-1-2 libdns88 libgconf2.0-cil libgssapi-krb5-2 libgssrpc4
  libgstreamer-plugins-base0.10-0 libisc84 libisccc80 libisccfg82 libk5crypto3 libkrb5-3 libkrb5support0 liblwres80 libmp3lame0 libmtp-common libmtp-runtime libmtp9
  libpostproc52 libruby1.8 libswscale2 libsystemd-login0 libtag1-vanilla libtag1c2a libxml2 libxml2-utils linux-headers-3.2.0-4-686-pae linux-headers-3.2.0-4-common
  linux-image-3.2.0-4-686-pae linux-libc-dev linux-source-3.2 python-aptdaemon python-aptdaemon-gtk python-aptdaemon.gtk3widgets python-aptdaemon.gtkwidgets
  python-libxml2 python-numpy ruby1.8 telepathy-gabble unattended-upgrades xserver-xorg-video-ati xserver-xorg-video-radeon
The following packages are RECOMMENDED but will NOT be installed:
  krb5-locales
70 packages upgraded, 0 newly installed, 0 to remove and 168 not upgraded.
Need to get 4322 kB/136 MB of archives. After unpacking 7982 kB will be used.
Do you want to continue? [Y/n/?]
Get: 1 http://www.deb-multimedia.org/ testing/main libavutil51 i386 8:1.0.5-dmo1 [111 kB]
Get: 2 http://www.deb-multimedia.org/ testing/main libmp3lame0 i386 1:3.99.5-dmo2 [338 kB]
Get: 3 http://www.deb-multimedia.org/ testing/main libpostproc52 i386 8:1.0.5-dmo1 [79.6 kB]
Get: 4 http://www.deb-multimedia.org/ testing/main libswscale2 i386 8:1.0.5-dmo1 [126 kB]
Get: 5 http://www.deb-multimedia.org/ testing/main libtag1-vanilla i386 1.8-dmo1 [257 kB]
Get: 6 http://www.deb-multimedia.org/ testing/main libtag1c2a i386 1.8-dmo1 [9396 B]
Get: 7 http://www.deb-multimedia.org/ testing/main gstreamer0.10-ffmpeg i386 1:0.10.13-dmo1 [3402 kB]
Fetched 4322 kB in 35s (121 kB/s)                                                                                                                                                
E: Failed to fetch http://www.deb-multimedia.org/pool/main/f/ffmpeg-dmo/libavutil51_1.0.5-dmo1_i386.deb: Hash Sum mismatch
E: Unable to correct for unavailable packages

1
尝试了所有的方法,始终出现相同的哈希值不匹配问题。这是从VirtualBox中获取的全新操作系统映像。 - Serve Laurijssen
11个回答

72
尝试使用apt-get:
apt-get clean
rm -rf /var/lib/apt/lists/*
apt-get clean
apt-get update
apt-get upgrade

谢谢mkjasinski,这似乎起作用了。在运行apt-get upgrade之后,我收到了以下消息:您可能需要运行“apt-get -f install”来纠正这些问题。 以下软件包存在未满足的依赖关系: libavcodec53:依赖于libavutil51(> = 7:0.10.3),但已安装6:0.8.5-1 libavformat53:依赖于libavutil51(> = 7:0.10.3),但已安装6:0.8.5-1 E:未满足的依赖关系。尝试使用-f。所以我运行了“sudo apt-get -f install libavutil5”。那个正确安装了。然后我再次运行apt-get update; apt-get upgrade,一切都更新了。 - Mark Giles
1
请注意,rm -rf /var/lib/apt/lists/* 命令也会删除 /var/lib/apt/lists/partial 目录,因此 rm -rf /var/lib/apt/lists/partial/* 这一行是多余的。 - smbear
只需要删除旧列表即可。 - he_the_great

33
如果删除/var/lib/apt/lists/*不能解决问题(尤其是当您在代理后面时),请像这样修复“哈希总和不匹配”问题:

创建文件/etc/apt/apt.conf.d/99fixbadproxy,并使用以下内容填充。

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

也请参见此处


@icedwater 在我的路由器更改了HTTP响应(例如在公寓大楼或大学/学院中进行临时用户身份验证时),我遇到了哈希大小不匹配的问题。为了防止路由器这样做,我必须启动浏览器并登录。删除列表会强制进行新的下载。最后一个apt设置似乎在说不要盲目相信HTTP响应,以免再次出现这个问题。中间那个说不使用缓存,因为我的互联网速度很慢,所以我删除了那一行;希望这样做没问题。简而言之,如果HTTP响应有时被替换,那些apt设置将会有所帮助。 - Andrew Smart
2
您今天真是我的英雄,我已经谷歌了一个小时,但却毫无头绪。我们通过代理使用的cntlm工具一直运行良好,但突然间就停止工作了。而您的答案解决了这个问题。 - Arno
2
我想赞同ArnoVR的观点 - 我一直在为解决这个问题而苦恼,而你的解决方案是唯一有效的。谢谢! - Oren Ben-Kiki
你是救命恩人!这是唯一一个真正为我解决问题的解决方案!非常感谢你。如果可以的话,我会给你+1000分的! - Felipe Cruz
唯一起作用的就是这个。感谢你救了我的心智,@Mike! - JohnTheWalker

23

我在Windows上使用Virtualbox,将Ubuntu作为我的GuestOS时遇到了问题。由于Hyper-V在Windows上运行,我遇到了哈希总和不匹配(以及其他奇怪的错误)。这个链接详细介绍了如何禁用Hyper-V,以下是提取内容:

打开Powershell - 以管理员身份运行并使用以下命令:

bcdedit /set hypervisorlaunchtype off

重新启动后。


1
我正在拔光我的头发(而我已经秃顶了!!)- 你是救星!! - Haim
谢谢!我一直在寻找解决方案。我正在VirtualBox 6.1上运行Ubuntu 20.04,并尝试了以上所有不同的变体。但是这个解决了我的问题。看起来它只影响了20.04,因为我最终还安装了18.04.4,但没有任何问题运行apt-update。 - Gargamel
非常感谢!为了完整起见,您还可以从“Windows功能”菜单中更改此设置,只需取消选中HyperV即可。 - R. Arctor
谢谢!从“Windows 功能”图形界面禁用 hyperv 解决了问题。 - Herosław Miraszewski
这对你我都起作用了;谢谢! - DribblzAroundU82
为什么 Hyper-V 会引起这种行为?我正在使用 WSL2 Ubuntu 映像,在禁用 Hyper-V 后它无法启动。 - Étienne

6

在安装Tizen GBS包时,我遇到了类似的问题。

只有以下解决方案帮助了我:

  1. 手动下载缺失的*.deb软件包
  2. 将软件包复制到 /var/cache/apt/archives 目录下
  3. 再次运行安装命令

在这种情况下,apt工具首先检查本地是否存在该软件包。如果它存在于 /var/cache/apt/archives 路径下,则跳过下载步骤(避免哈希值不匹配的错误)。

示例:

wget http://download.tizen.org/tools/latest-release/Ubuntu_16.04/amd64/librpm-tizen_4.11.0.1.tizen20140530-tizen20140723_amd64.deb

sudo cp librpm-tizen_4.11.0.1.tizen20140530-tizen20140723_amd64.deb /var/cache/apt/archives

2

编辑:我的Ubuntu安装已崩溃。我不确定确切的原因,但这个黑客攻击是主要嫌疑人。

我遇到了类似的问题。

Get:1 http://in.archive.ubuntu.com/ubuntu artful/main amd64 openjdk-8-jre-headless amd64 8u144-b01-2 [27.3 MB]                                                                                                                                                                 
Err http://in.archive.ubuntu.com/ubuntu artful/main amd64 openjdk-8-jre-headless amd64 8u144-b01-2                                                                                                                                                                             
  Hash Sum mismatch
Hashes of expected file:
 - SHA256:46924d3fdb329b18b652bc3410f1f2c92ef1259b9a7d66bb1c5d3804b42a8c1c
 - SHA1:0097b24ef75249d381c7c3f3fb6b36593720c15e [weak]
 - MD5Sum:1ff35c4d8a2bed71dceba105801cf567 [weak]
 - Filesize:27256930 [weak]
Hashes of received file:
 - SHA256:ea6892eb6ce7cdc1674a46719302cdbf1b9d485e36bccd27247591527423bb6d
 - SHA1:8c19fbdc9f534d8d3c304374bf0c8e7b05cb620b [weak]
 - MD5Sum:1ff35c4d8a2bed71dceba105801cf567 [weak]
 - Filesize:27256930 [weak]
Last modification reported: Sat, 30 Sep 2017 20:08:32 +0000

幸运的是,哈希值不匹配只发生在一个软件包上。由于我确信下载的软件包是预期的软件包,所以我简单地编辑了InRelease文件。

我遵循的步骤: 1. 在/var/lib/apt/lists中搜索预期哈希值的grep命令

sudo grep 46924d3fdb329b18b652bc3410f1f2c92ef1259b9a7d66bb1c5d3804b42a8c1c *
  1. 在我的情况下,它是在 in.archive.ubuntu.com_ubuntu_dists_artful_main_binary-amd64_Packages 中

  2. 用接收到的文件的哈希值替换期望文件的哈希值。

  3. 升级成功完成。

1

用以下内容替换您的/etc/apt/sources.list文件:

deb http://http.debian.net/debian/ jessie main
deb http://http.debian.net/debian/ jessie-backports main
deb http://security.debian.org/ jessie/updates main

然后我还会运行:

sudo apt-key update -y
sudo apt-get update -y
sudo apt-get upgrade -y

我明白了,需要翻译的内容是:

这应该能解决问题。

来源:https://www.lowendtalk.com/discussion/62567/apt-get-hash-sum-mismatch-debian-jessie


当回答发布时,“jessie”显然是当前版本,但可能需要根据您的Debian版本或发行版进行调整。 - tripleee

1

对我来说,rm -rf /var/lib/apt/lists/* && apt-get update 没有起作用。
然而,rm -rf /var/lib/apt/lists/* && apt update 起作用了。


0

使用sudo apt-get install apt升级apt


0
在我的情况下,以下解决方案对我没有用:
- /var/lib/apt/lists/* - 将服务器更改为“主服务器”(或其他外部服务器)
我仍然遇到相同的存储库给出“哈希总和不匹配”的错误。
我尝试了以下解决方案:
1. 进入“软件和更新” 2. 取消“Ubuntu软件”部分中所有存储库的选择 3. 选择“认证”部分 4. 删除所有条目 5. 运行sudo apt update(没有存储库,它应该很快结束) 6. 重新打开“软件和更新”->“Ubuntu软件”,并重新检查您需要的所有存储库 7. 再次尝试sudo apt update 祝你好运。

你的解决方案简直毁了一切。 - Bibek

0
在我的情况下,尝试从nodesource安装Nodejs时出现了问题,总是以“哈希值不匹配”结束。以上解决方案都没有起作用。
我无法理解为什么会这样,因为我完全按照说明操作:
# 在Debian上,以root身份运行 curl -sL nodesource-url | bash - apt-get install -y nodejs
结果发现,Nodejs的存储库使用https,而我的主要Debian sources.list使用http。
cat /etc/apt/sources.list.d/nodesource.list
deb https://... deb-src https://...
将URL更改为http并运行apt-get update即可解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接