apt-get:大小不匹配

apt-get:大小不匹配

我创建了一个私人 deb 存储库,用于将软件及其更新传播到 600 台 Ubuntu 上网本。每次连接网络时,我的脚本都会尝试执行 apt-get 更新。

但有时(事实上经常),我会遇到这种情况:

Failed to fetch https://myserver/ubuntu/dists/maverick/main/binary-i386/voosicomat.deb  **Size mismatch**

该服务器是 2.2 Apache,仅支持 HTTPS。其日志中没有错误。

脚本如下:

apt-get update
apt-get dist-upgrade --force-yes --yes

以下是 apt-get 的完整输出

Ign https://myserver maverick Release.gpg
Ign https://myserver/ubuntu/ maverick/main Translation-en
Ign https://myserver maverick Release
Ign https://myserver maverick/main i386 Packages/DiffIndex
Ign https://myserver maverick/main i386 Packages
Ign https://myserver maverick/main i386 Packages
Hit https://myserver maverick/main i386 Packages
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
  majdb utilitaires voosicomat
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 6207kB/6273kB of archives.
After this operation, 0B of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  utilitaires voosicomat majdb
Get:1 https://myserver/ubuntu/ maverick/main voosicomat all 2.0.1 [4755kB]
Get:2 https://myserver/ubuntu/ maverick/main majdb all 1.0.17 [1452kB]
Failed to fetch https://myserver/ubuntu/dists/maverick/main/binary-i386/voosicomat.deb  Size mismatch
Fetched 7091kB in 21s (324kB/s)
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

答案1

您的问题可能是 repo 错误。如果索引未在 repo 上更新,那么您将收到(不太有用的)Size mismatch错误。

一个可能的解决方法是通过以下方式更新你的仓库

  1. 删除问题包
  2. 将软件包复制回存储库
  3. 运行存储库更新脚本sudo /usr/local/deb/update

您还可以编辑 apt sources.list 以删除除本地存储库之外的所有存储库。

答案2

以上答案对我都不起作用。结果发现问题与某些代理和 HTTP/1.1 流水线有关

apt-get -o Debug::Acquire::http=true update

显示了一些来自 2012 年的疯狂的 Last-Modified Headers... 我们也遇到了这个问题,下载的软件包的内容与我们预期的不同,这很奇怪

解决方案是禁用 apt 的 http 管道

1)创建文件/etc/apt/apt.conf.d/00httppipeline

2)复制粘贴Acquire::http::Pipeline-Depth "0";

3)删除 apt 缓存rm -rf /var/cache/apt/*

之后,大小不匹配或哈希大小不匹配错误消失了,我可以升级我的软件包

答案3

我正在运行 Ubuntu 11 并删除了 /var/cache/apt/archives/ 下的所有 *.deb

然后运行:apt-get --fix-install install

似乎有效。

答案4

我正在运行 Elementary OS:

删除已安装(不再需要)的下载软件包(.deb)

sudo apt-get clean

删除缓存中所有无法再下载的软件包(即不再存在于存储库中的软件包或存储库中具有较新版本的软件包)。

sudo apt-get autoclean

删除不必要的软件包(卸载应用程序后,可能会有一些你不再需要的软件包)

sudo apt-get autoremove

这修复了我的错误。

相关内容