Chrome - apt-get update 无法获取 http://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages.bz2 哈希值总和不匹配

Chrome - apt-get update 无法获取 http://dl.google.com/linux/chrome/deb/dists/stable/main/binary-amd64/Packages.bz2 哈希值总和不匹配

我在跑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 对加密算法有所抱怨。

这个问题的根源似乎有两个:

  1. apt 最近弃用了 sha1,这解释了自最新 LTS 发布以来我们一直从 google repo 收到的警告。
  2. 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 之前再次更新 a​​pt-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,并没有导致问题再次发生。我对我的答案的有效性感到疑惑,但我期待一些反馈来确定这是否导致了问题。如果确实如此,那么如果文件没有更改,我不确定为什么会这样。

相关内容