使用Apt-Cacher NG的Apt-Get无法获取哈希和不匹配的软件包


8

我有一台使用Apt-Cacher NG的计算机在另一台计算机上作为缓存代理运行。

当我尝试运行时sudo apt-get update,出现以下错误:

W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_source_Sources  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_universe_binary-amd64_Packages  Hash Sum mismatch
W: Failed to fetch gzip:/var/lib/apt/lists/partial/it.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_binary-i386_Packages  Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.

/etc/apt/sources.list.d目录为空。

为了解决这个问题,我已经尝试了以下方法,但均未成功:

解决方案1:

sudo rm -fr /var/lib/apt/lists
sudo mkdir -p /var/lib/apt/lists/partial
sudo apt-get clean
sudo apt-get autoclean

解决方案2:

sudo apt-get update -o Acquire::http::No-Cache=True

有什么建议吗?


我有时会看到这种行为。在这种情况下,连续多次运行sudo apt-get update会有所帮助,但是我不知道为什么,所以从不更详细地调查此问题。
奇怪的东西2012年

1
在不使用Apt-Cacher NG的计算机上也会发生这种情况。在这些情况下,解决方案1解决了该问题。
Marco Lackovic 2012年

Answers:


11

我建议不要使用APT-cacher-ng并查看Squid-deb-proxy。

根据我的经验,APT-cacher-ng已被证明是非常多的错误,并且大量的错误报告非常出色。直到最近才有人提议,由于一些主要错误已得到解决,因此在Debian中不再受到阻碍。对于Ubuntu,很久以前我已经切换到Squid-deb-proxy,我对此并不后悔。这是一个很好的选择,也是我遇到的最好的APT缓存器。

对于Squid-deb-proxy,只需安装软件包squid-deb-proxy并在中的新文件中添加允许的目标域/etc/squid-deb-proxy/mirror-dstdomain.acl.d。另外,客户端可以通过squid-deb-proxy-client安装软件包在本地网络中自动发现启用了缓存的计算机。


6

您可以通过运行以下命令立即解决此问题:

http://your-cache-server:3142/acng-report.html?abortOnErrors=aOe&byPath=bP&byChecksum=bS&truncNow=tN&incomAsDamaged=iad&purgeNow=pN&doExpire=Start+Scan+and%2For+Expiration&calcSize=cs&asNeeded=an#bottom

这将删除缓存中所有损坏的文件。

要制作此永久网,请查看https://www.unix-ag.uni-kl.de/~bloch/acng/html/maint.html#auto-cleanup

基本上,您可以设置每日缓存清除cron以对整个缓存进行完全校验和匹配。这将捕获所有错误的大小和所有其他损坏,并清除这些文件。我/etc/cron.daily/apt-cacher-ng在评论后编辑并添加了以下内容:

export ACNGREQ="abortOnErrors=aOe&byPath=bP&byChecksum=bS&truncNow=tN&incomAsDamaged=iad&purgeNow=pN&doExpire=Start+Scan+and%2For+Expiration&calcSize=cs&asNeeded=an"

这等效于单击维护页面上的所有“到期”选项,除了“跳过标题检查...”。


1
这是摆脱我的系统错误的唯一答案!

我认为您可能需要?在导出字符串的开头。
TafT

3

建议1

sudo rm /var/lib/apt/lists/*gzip*
sudo rm /var/lib/apt/lists/partial/*gzip*
sudo apt-get update

建议2

sudo rm -f /var/cache/apt/partial/*
sudo rm -f /var/cache/apt/*.deb
sudo apt-get update

建议3

sudo touch /etc/apt/apt.conf.d/no-cache
sudo nano /etc/apt/apt.conf.d/no-cache

并将其粘贴到:

Acquire::http {No-Cache=True;};

现在尝试:

sudo apt-get update

1
谢谢,但是三个都不起作用。
Marco Lackovic 2012年

就像将超级缓存设置为true的魅力一样工作!太感谢了!:)
mhenrixon

3

apt-cacher-ng自从发行版升级之日起,我就在Ubuntu Precise 12.04 LTS上经常使用“哈希总和不匹配”和“无效标题”错误进行非常频繁的战斗(每50次下载中的1次)。Ubuntu Precise使用apt-cacher-ng版本0.7.2-1,到目前为止,该软件已修复了许多错误,而更新版本:0.7.26-1更稳定。

我已经安装了apt-cacher-ng来自packages.ubuntu.com 的Ubuntu Quantal版本,即版本0.7.26-1。

我强烈建议抢购的将来/测试版本apt-cacher-ng,并手动安装此较新的软件包。


1

我的升级几乎总会成功-95%的文件将通过代理下载,而最后的约100个文件可能会因为“哈希和不匹配”而失败,并且所有拟议的解决方案都无法正常工作。

然后,只是笑着,和笑声,我搬01proxy过来01proxy.ng,跑了aptitude update,然后update-manager和选择配送升级。它继续从archive.ubuntu.com(〜70M而不是〜1G)下载剩余文件,其余升级顺利进行。重新启动后,我将01proxy.ng移回01proxy,一切恢复正常。

我现在已经完成了两次,一次是在代理服务器本身上,另一次是在客户端上,在通过代理失败(达到95%的标记)之后,两者都取得了不错的成功。


1

删除/var/cache/apt-cacher-ng/download.virtualbox.org文件夹确实帮助我解决了来自Oracle服务器的阻止程序包Failed to fetch ... Hash Sum mismatch上的问题。apt-get updatevirtualbox-4.3


0

建议4

运行sudo apt-get update && sudo apt-get upgrade -y在apt-cacher的NG服务器上可以解决这个问题。每次出现问题时都需要这样做。

建议5

有时问题出在镜像上:更改/etc/apt/sources.list服务器和客户端上的镜像都可以解决此问题。


0

您也可以删除整个存储库文件夹

rm -r /var/cache/apt-cacher-ng/<repository_folder>

散列和不匹配的软件包存储在哪里。

在下一个apt请求中,由apt-cacher-ng自动创建带有干净哈希值的新文件夹。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.