在多个软件包上使用 apt-get 时出现“大小不匹配”

在多个软件包上使用 apt-get 时出现“大小不匹配”

我在使用 apt-get 下载多个软件包时遇到了麻烦。到目前为止,我在使用“opencv”和“gstreamer”时都遇到了这个问题。使用 opencv 时,它会获取多个文件,然后返回以下错误。我尝试了几个不同的镜像,但它们都在相同的文件上出错。

Do you want to continue [Y/n]? y
Get:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ precise/universe libopencvvideo2.3 i386 2.3.1-7 [106 kB]
Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu/ precise/universe libopencv-video-dev i386 2.3.1-7 [129 kB]
Fetched 2,225 B in 0s (11.8 kB/s)        
Failed to fetch http://us-east-1.ec2.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libopencv-video2.3_2.3.1-7_i386.deb  Size mismatch
Failed to fetch http://us-east-1.ec2.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libopencv-video-dev_2.3.1-7_i386.deb  Size mismatch
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

我运行了“apt-cache show libopencv-video*”并得到:

Package: libopencv-video2.3
Priority: optional
Section: universe/libs
Installed-Size: 277
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Science Team <[email protected]>
Architecture: i386
Source: opencv
Version: 2.3.1-7
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libopencv-core2.3, libopencv-imgproc2.3 (= 2.3.1-7), libstdc++6 (>= 4.1.1)
Filename: pool/universe/o/opencv/libopencv-video2.3_2.3.1-7_i386.deb
Size: 105756
MD5sum: b38c0f11f3856d62168b730522a9691b
SHA1: d45cd609ea497ae72858e0f5914134e124261f22
SHA256: 85e72311ede84efbdd17781cdb04f79818a28968c63f407df6c56efe7da5525e
Description-en: computer vision Video analysis library

当我比较报告的文件大小 (105756) 时,我发现它与使用 wget 下载“deb”包时的大小不匹配。

除了对每个失败的文件使用 wget 并手动安装它们之外,还有什么建议可以解决此问题?

答案1

事实证明,问题不在于 apt-get,而在于我的公司。互联网政策会屏蔽 URL 中所有带有“video”的关键字。我通过查看 的内容发现了这一点libopencv-video2.3_2.3.1-7_i386.deb/var/cache/apt/archives/partial它包含来自网络过滤器的 html,通知我我违反了互联网政策等等。

谁会知道他们的首席研究工程师会采用如此简单的政策?

得到的经验教训是:要求您的 IT 部门提供一组不受愚蠢政策约束的地址,并向他们收取我和那些试图提供帮助的人所浪费的时间的费用……

答案2

我遇到过很多这样的问题但我总是设法解决它们。

例如:

Failed to fetch http://us-east-1.ec2.archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libopencv-video-dev_2.3.1-7_i386.deb

在这种情况下,我将从主服务器手动获取包,如下所示:

wget http://archive.ubuntu.com/ubuntu/pool/universe/o/opencv/libopencv-video-dev_2.3.1-7_i386.deb

请注意,我删除了美国东部的内容。

然后运行:

sudo dpkg -i libopencv-video-dev_2.3.1-7_i386.deb

安装该包。

然后只需运行你尝试的原始命令

答案3

我尝试升级 owncloud 时修复了大小不匹配问题。问题出在错误的 ppa url。

我的 repo 是针对 xubuntu 的:

http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_15.04/Release

更改为合适的 ubuntu:

http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/Ubuntu_15.10/Release

概括:确保您已经为您的 Ubuntu 发行版和版本正确设置了 ppa 的 URL。

答案4

好吧,我也遇到过同样的问题。就我而言,这完全是我自己造成的问题。我正在为内部软件包服务器构建新软件包,每次都在服务器上替换软件包,而不增加版本号(只有我提取文件)。

我的调查如下...

  • 运行apt-cache show命令-确认文件大小
  • 手动拉动文件——确认它确实不匹配。
  • 手动检查包服务器上的文件大小是否与apt-cache输出匹配

由此得出的结论是,我拉取的 .deb 已被缓存……由我们的代理服务器(以透明模式运行)缓存。我通过查看代理日志确认了这一点,它确实显示缓存“命中”

解决方案? 再次运行该wget命令但强制代理刷新

wget http://packages.example.com/pool/contrib/.../packagename.deb --no-cache

这足以让代理刷新文件,此时文件可以apt-get正常工作。

显然,在不改变版本号的情况下替换软件包是错误的选择,但这也是导致此问题的另一个可能原因。

相关内容