![Chrome - apt-get update 无法获取 http://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages.bz2 哈希值总和不匹配](https://linux22.com/image/1136512/Chrome%20-%20apt-get%20update%20%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96%20http%3A%2F%2Fdl.google.com%2Flinux%2Fchrome%2Fdeb%2Fdists%2Fstable%2Fmain%2Fbinary-amd64%2FPackages.bz2%20%E5%93%88%E5%B8%8C%E5%80%BC%E6%80%BB%E5%92%8C%E4%B8%8D%E5%8C%B9%E9%85%8D%20.png)
我在跑Chrome 50.0.2661.102(64 位)在Ubuntu 16.04 x64今天sudo apt-get update
失败并显示以下消息:
...
Err:28 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages
Hash Sum mismatch
...
W: http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg: Signature by key 4CCA1EAF950CEE4AB83976DCA040830F7FAC5991 uses weak digest algorithm (SHA1)
W: http://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg: Signature by key 3B068FB4789ABE4AEFA3BB491397BC53640DB551 uses weak digest algorithm (SHA1)
E: Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages.bz2 Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.
这是我的/etc/apt/sources.list.d/google-chrome.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
以及第 23-25 行/opt/google/chrome/cron/google-chrome
# sources.list setting for google-chrome updates.
REPOCONFIG="deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main"
REPOCONFIGREGEX="deb (\[arch=[^]]*\bamd64\b[^]]*\][[:space:]]*) https?://dl.google.com/linux/chrome/deb/ stable main"
正如由于“哈希值不匹配”错误,无法下载软件包列表, 我试过
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get update
但问题依然存在。
该问题是否与 Google 服务器有关,还是我这边的配置问题?
更新 1:问题似乎来自谷歌...在他们修复它之前,应该/etc/apt/sources.list.d/google-chrome.list
将其删除或将该deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
行注释掉...
更新 2:“哈希总和不匹配”错误已修复(但“弱摘要算法”警告仍然存在。这对我来说不是什么大问题,因为现在 apt-get 返回 0,我可以sudo apt-get update && sudo apt-get -y upgrade
毫无问题地运行)
答案1
我在 Ubuntu 14.04 和 Ubuntu 16.04 上都遇到了完全相同的错误“哈希和不匹配”,并且只有 16.04 对加密算法有所抱怨。
这个问题的根源似乎有两个:
- apt 最近弃用了 sha1,这解释了自最新 LTS 发布以来我们一直从 google repo 收到的警告。
- Google 计划在某个时候修复“弱摘要算法”警告:(https://bugs.chromium.org/p/chromium/issues/detail?id=596074)
以下是投机但似乎符合我们看到的症状:
Google 可能推出了新的哈希,这些哈希不再与每个人都在使用的 GPG 公钥签名相匹配,大概这些哈希不再是 sha1sum。这可能意味着他们为新密钥创建了哈希,但尚未发布新的 GPG 公钥签名以配合它们用于存储库,因此哈希不匹配。
如果事实证明这是真的,除了非常烦人之外,在谷歌采取行动之前我们无能为力。
我怀疑这只是一个时间问题,我们应该很快就会看到一个修复,以我们应该使用的新 GPG 公钥签名的形式。添加最新的应该很容易:
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
当然,假设新密钥的链接不会改变;我会密切关注那里的变化。
如果您对这些消息感到不满,您可以通过注释掉中的来源来禁用它们/etc/apt/sources.list.d/google-chrome.list
。
software-properties-gtk
允许您在添加新的签名之前,删除身份验证选项卡中任何现有的 Google 签名。
和如果您删除了 repo 文件(就像我今天删除了好几次一样),您可以通过再次安装 .deb 来正确设置 repos,只需确保在 /etc/defaults/google-chrome 中将 repo_add_once 变量设置为“true”即可。该文件应如下所示:
repo_add_once="true"
repo_reenable_on_distupgrade="true"
这当然是不是目前修复了任何问题,但会再次正确配置所有内容。此外,最后一个小警告 - 安装 repos 的脚本通常包含 GPG 签名的副本,因此您可能需要在执行 apt-get update 之前再次更新 apt-key。
希望这个问题很快消失。
答案2
我不知道我是否设置了该选项(我不知道为什么要设置该选项),或者 Google/Chrome 是否设置了该选项但/etc/apt/sources.list.d/google-chrome.list
设置了不可变标志。设置该选项意味着文件无法更改或修改。
我不知道这是否只影响我(如果我因为某种原因自己设置了它)或者这是否是根本原因并且是由 Google 设置的。
运行命令lsattr /etc/apt/sources.list.d/google-chrome.list
。如果第 5 个字符是i
而不是-
,则表示设置了不可变标志。
不可变标志集:----i--------e-- /etc/apt/sources.list.d/google-chrome.list
未设置不可变标志:-------------e-- /etc/apt/sources.list.d/google-chrome.list
如果设置了不可变标志,则可以通过运行来修复此问题sudo chattr -i /etc/apt/sources.list.d/google-chrome.list && sudo apt-get update
请在评论中告诉我您的系统是否设置了此功能。我无法想象我为什么要设置它,但如果其他人的系统也设置了此功能,那么我知道这是 Google 的错,而不是我的错。
更新:我比较了/etc/apt/sources.list.d/google-chrome.list
过去和现在,因为我使用 etckeeper,我没有看到文件本身有任何变化,这让我质疑不可变位的有效性,但是禁用不可变位似乎确实解决了我的问题。
更新:我手动重新启用了不可变位,然后运行sudo apt-get update
,并没有导致问题再次发生。我对我的答案的有效性感到疑惑,但我期待一些反馈来确定这是否导致了问题。如果确实如此,那么如果文件没有更改,我不确定为什么会这样。