什么原因导致出现“无法获取...文件大小不符合预期。镜像同步进度?”错误?

我看到不同的人对不同的资源库出现了这个错误。只是好奇这个错误的确切含义,因为前几天我遇到了它。我记得我运行了"sudo apt update"命令。
引用: E: 拉取https://download.docker.com/linux/ubuntu/dists/bionic/stable/binary-amd64/Packages.bz2 文件大小不符 (9051 != 9594)。镜像同步进行中?
根据我的印象,这可能是在包容器与某些内容混乱时发生的事情。
4个回答

打开“软件和更新”,并根据@K7AAY分享的链接将下载自更改为主服务器

Software & Update


1谢谢你。你帮我节省了几个小时的疑难解答时间。 - Zimo

看一下官方的Ubuntu镜像列表
看到红色的那些了吗?那些不是最新的。它们最终会通过与主存储库同步来更新。在这个过程中,文件大小将不匹配主文件大小,会出现这样的错误。
解决方案:使用另一个镜像。如何在Ubuntu 18.04中更改更新服务器?中有详细说明。

我仍然有些困惑,无法完全理解。如果我从镜像下载一个软件包,Ubuntu会检查镜像和主服务器上的文件大小是否匹配吗?那么,为什么要使用镜像而不直接从主服务器获取软件包呢? - frownyface
1为什么不呢?因为Linux用户下载的东西太多了。在全球各地有多个镜像站点意味着人们可以更快地获取他们需要的下载内容。 - K7AAY
我明白了,我猜我之前有些困惑,因为我以为在软件包下载过程中,不需要将镜像文件的大小与主文件的大小进行比较会更高效。因为我认为此时只需从主服务器下载软件包即可。但现在看来这样做是为了节省从主服务器下载的过程。所以这个比较是出于安全考虑吗? - frownyface
为了数据完整性。 - K7AAY

我曾经遇到过同样的问题,尝试更换镜像并不能解决(这是针对xpra的,一个只在一个地方托管的第三方软件源)。在我苦苦思索无果后,我最终决定从另一个配置相同的系统中复制正确的源。这样做成功了。
$ mkdir /tmp/lists
$ cd /tmp/lists
$ scp -p otherhost:'/var/lib/apt/lists/*xpra*' .
$ sudo chown root:root *
$ sudo cp -pi * /var/lib/apt/lists/
$ sudo apt update

我无法确定为什么这个方法有效,但它确实有效。也许xpra仓库服务器上存在一些配置错误,但当我手动检查仓库服务器的/dists区域时,我无法找到大小不匹配的原因所在。

更新/etc/apt/sources.list文件,使用下面的镜像链接之一,并在镜像同步完成之前对先前的仓库链接进行注释。

https://launchpad.net/ubuntu/+archivemirrors

例如:对于Ubuntu 18.04版本,您可以使用以下行更新您的/etc/apt/sources.list文件。
deb http://mirrors.piconets.webwerks.in/ubuntu-mirror/ubuntu/ bionic main 
deb-src http://mirrors.piconets.webwerks.in/ubuntu-mirror/ubuntu/ bionic main 

这很危险。而且没有足够的解释说明这个选项是干什么用的。 - davidbaumann
1已更新分辨率,请确认。 - Manyam Nandeesh Reddy