我在使用 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
正常工作。
显然,在不改变版本号的情况下替换软件包是错误的选择,但这也是导致此问题的另一个可能原因。