无法安装Docker-哈希总和不匹配(Ubuntu 18.04,Vagrant,Virtualbox)

时间:2020-04-04 11:35:51

标签: docker ubuntu vagrant virtualbox apt

我只是无法在Ubuntu 18.04的新映像中安装Docker(在Virtualbox中,使用Vagrant)。 我正在使用官方网站上的说明:

https://docs.docker.com/install/linux/docker-ce/ubuntu/

或来自https://github.com/docker/docker-install的简短命令:

curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh

并且总是遇到相同的错误-哈希和不匹配

Failed to fetch https://download.docker.com/linux/ubuntu/dists/bionic/pool/stable/amd64/docker-ce_19.03.8~3-0~ubuntu-bionic_amd64.deb  Hash Sum mismatch
   Hashes of expected file:
    - SHA512:600f2d9b51024e5866a6256f2d08b4e733a6c8428e334d81de483a7138cbe9db00e8d67673a88d46c80ef0aa673e2f0183f8fd58226575a3a6a843f955c49e2a
    - SHA256:22fe06851dde23200c835641e234760bbb60b79abc3b2a1fbbd1a9b0f1a2e9d0
    - SHA1:7292df34a82e58cab0e45af61036ec19c81eb199 [weak]
    - MD5Sum:8d62aefa851deb2f0739b4a1fd232322 [weak]
    - Filesize:22879338 [weak]
   Hashes of received file:
    - SHA512:265e3e4f877e4d060098d88527258335a08c9b421fabd5573bb5c951fd337c2d157c418132ff6a54568e85c6bd0da3e1b66c51196410016b4b409d1cef2df4cd
    - SHA256:3d15d2e2a7bacc0840aea09400970328d853eb369585e97ce33c8bebbc5c4d37
    - SHA1:da5b39535801e35493cd2f7c6f2b176263bd7da4 [weak]
    - MD5Sum:a4e2e8ec89b2d98c218b3931d7845f50 [weak]
    - Filesize:22879338 [weak]
   Last modification reported: Wed, 11 Mar 2020 19:46:26 +0000
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

11 个答案:

答案 0 :(得分:5)

我也在多个Linux发行版中看到大量软件包的问题。全部在Windows 10上的VirtualBox 6.1.6中。 错误包括哈希总和不匹配,LZMA压缩损坏,GZIP损坏和Squashfs解压缩失败。基本上所有涉及校验和的东西。

我似乎不太可能下载4个发行版(和数十个软件包),而且它们都存在问题。禁用Hyper-V似乎可以改善。

答案 1 :(得分:3)

我在Windows 10 Update 2004上遇到问题。更新软件存储库索引和进行安装时,校验和不匹配。

问题实际上是由于联网和Windows的“自动调整”参数引起的。

您可以在提升的命令提示符下查看当前状态:

netsh int tcp show global
Receive Window Auto-Tuning上的

normal产生了问题。通过将其设置为disabled,对我来说问题就不复存在了。

您可以通过在提升权限的命令提示符下执行以下命令来更改它。

netsh int tcp set global autotuninglevel=disabled

答案 2 :(得分:2)

好的,据我所知,这是Virtualbox的错。 因为当我在同一框中使用hyperv提供程序时,在Vagrant中没有看到此问题。

Virtualbox的版本为6.1.4 r136177 (Qt5.6.2)

我检查了虚拟操作系统如何下载软件包(仅通过使用wget通过直接链接下载它),我发现下载的软件包的哈希值与原始哈希值确实不同(但大小绝对相等)。 我已经在主机操作系统中下载了相同的软件包,并且哈希值与原始值匹配。

输出错误和虚拟OS内已下载软件包的哈希和(与原始版本不同)

The hashsum of the downloaded package inside the virtual OS

在主机操作系统上下载的软件包的哈希值(等于原始值):

The hashsum of the downloaded package at the host OS

答案 3 :(得分:2)

我也经常遇到这些问题!

我的设置是在Win10主机上运行Vagrant 2.2.7的Virtual Box 6.1.6。

使用上述想法,问题可能是Virtual Box而非Ubuntu固有的,我卸载了Virtual Box 6.1.6,然后安装了旧版本的Virtual Box(6.0.10),然后重新安装了Vagrant 2.2.7。我还从Windows卸载了Hyper-V。

在进行了这些系统和软件更改后,Vagrant的自动Docker配置按预期工作,没有任何哈希不匹配消息。这对我有用,我希望对其他人也有帮助。

答案 4 :(得分:1)

对于仍然对此有疑问的任何人,我都通过禁用HyperV使其正常工作(正如大多数人已经建议的那样)。但是,在我的设置中,使用上述方法禁用HyperV实际上并没有禁用HyperV,因为我的Windows机器同时将HyperV用于CredentialGuard和Secure Boot,这两个都需要在实际上完全禁用HyperV之前禁用

如果在高架终端中运行systeminfo.exe显示A hypervisor has been detected. Features required for Hyper-V will not be displayed,则说明HyperV没有完全禁用。禁用凭据保护和安全启动以及几次重新启动(以及已经提到的所有禁用HyperV的命令),对我来说解决了所有问题。

仅供参考,如果HyperV被完全禁用,您应该看到

Hyper-V Requirements:      VM Monitor Mode Extensions: Yes
                           Virtualization Enabled In Firmware: Yes
                           Second Level Address Translation: Yes
                           Data Execution Prevention Available: Yes

运行systeminfo.exe

答案 5 :(得分:1)

对于仍然出现此错误的任何人,它已在最新版本的 VirtualBox 中修复(至少从 6.1.16 版开始)。检查您的版本是否已过期。

答案 6 :(得分:0)

在新的Debian VM(VBox)amd64(32GB VDI)中出现相同的问题。

sh get-docker.sh
...

E: Failed to fetch https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/containerd.io_1.2.13-1_amd64.deb  Hash Sum mismatch
   Hashes of expected file:
    - SHA512:e0f8eb0ed3bd881bf5f278f3736da3e4fb05410014a0103301c135a33061945e013bcf8a9cd704d9d6b4fa088d478ebea27e86e466889d0194a8cbb77e94efdf
    - SHA256:a4f244216e54a8a47f2dc5c57acb4cb48a779c54a8588ea2d55c40a57092baf6
    - SHA1:90611afda0acabae485f871b09e4c1eba0ac4dc0 [weak]
    - MD5Sum:78a039cf82b1bd4a285114bdd030982e [weak]
    - Filesize:20114318 [weak]
   Hashes of received file:
    - SHA512:41c516c077d9941b55b605d4c83a9462c2ec52089f8af55618e5335da7d272d33d57fdd14a51b5a5e433ad6d9671e1a0063f9edeaa8c31525f56474b6ac1d875
    - SHA256:57080e5482d92e74c3095b948fc0ba827f43b7b03c8825e5a64b7ef058b5434c
    - SHA1:4f114ab71f4622f5785da726b822ad213ec77d44 [weak]
    - MD5Sum:9a5d02cb5624219e6715875cc4bc8673 [weak]
    - Filesize:20114318 [weak]
   Last modification reported: Tue, 03 Mar 2020 04:24:01 +0000
E: Failed to fetch https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce-cli_19.03.8~3-0~debian-buster_amd64.deb  Hash Sum mismatch

答案 7 :(得分:0)

好,就在这里。

研究了最有帮助的@Kurt Le Breton的答案并反复测试后,我的结论如下。

Virtual Box的最新值为6.1.12,这带来了上述哈希总和不匹配的问题。实际上,似乎整个6.1.xx都存在此问题。

因此,请转到上一个6.0 version。但是,当您发出此无用的命令时,无用的对象会在您的脸上吐出以下错误。

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "40f50d63-6d70-4ac9-b0d6-02dcf1cdce7c", "--type", "headless"]
Stderr: VBoxManage.exe: error: Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

现在要解决此问题,您需要摆弄Hyper-v设置。您需要以管理员身份运行以下命令。

bcdedit /set hypervisorlaunchtype off

运行该命令后,需要重新启动计算机。 有了这个,您的Vagrant应该可以毫无抱怨地运行,并且docker应该安装在您的VM上,而没有任何哈希总和不匹配错误。

我使用6.0.24(它是最新的6.0版本)进行了测试,到目前为止,一切看起来都很正常。

但是,有一个陷阱。将hypervisorlaunchtype设置为off后,Docker桌面将无法启动。您现在收到此错误。当您尝试在Windows上为Linux容器启动Docker时,将收到此错误。对于Windows,这不是问题。

An error occured. Cannot enable Hyper-V service.

An error occured. Cannot enable Hyper-V service from docker desktop

所以现在您需要将其重置为原始状态。

bcdedit /set hypervisorlaunchtype auto
这次

注意 auto 而不是 off

同样,您需要成为管理员才能运行此程序,运行之后,您必须重新启动计算机。

因此,工作流应首先将其设置为关闭,启动您的虚拟机,然后使用vagrant为他们配置docker,然后最后将hypervisorlaunchtype设置回auto。

答案 8 :(得分:0)

我遇到相同的问题,并尝试了上述解决方案。它们都不适合我的情况。我将盒子更改为Debian。所有问题都消失了。

答案 9 :(得分:0)

我在使用 Docker 或 PHP 时遇到了同样的问题(Debian sury depo - Sury.org)

HyperV 已在我的 Windows 上禁用。但是我在VirtualBox下一直有这个问题。

我在 Virtualbox 机器配置中解决了这个问题:

<块引用>

“系统”>“处理器”>“启用 PAE/NX”选项。

然后重新启动您的虚拟机,启动 apt install(或升级)命令,它应该可以工作了。

答案 10 :(得分:-1)

这是与我相同的错误。哈希总和不匹配...

初始化WSL2之后,Oracle VM固件运行良好。

-禁用Windows Hyper-v