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

mad*_*uri 10 updates 64-bit package-management apt google-chrome

我在Ubuntu 16.04 x64上运行Chrome 50.0.2661.102(64 位),今天失败并显示以下消息: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.
Run Code Online (Sandbox Code Playgroud)

这是我的 /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
Run Code Online (Sandbox Code Playgroud)

和第 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"
Run Code Online (Sandbox Code Playgroud)

正如“由于“哈希和不匹配”错误导致下载包列表出现问题的答案所建议的那样,我尝试了

sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

但问题仍然存在。

该问题是否与 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毫无问题地运行)

Joh*_*tos 8

我在 Ubuntu 14.04 和 Ubuntu 16.04 上都遇到了同样的错误“哈希和不匹配”,只有 16.04 抱怨加密算法。

这个问题的根源似乎是双重的:

  1. apt 最近弃用了 sha1,这解释了自最新的 LTS 发布以来我们从 google repo 收到的警告。
  2. 谷歌将在某个时候为“弱摘要算法”警告提供修复:(https://bugs.chromium.org/p/chromium/issues/detail?id=596074

以下是推测性的,但似乎符合我们所看到的症状:

谷歌可能已经推出了不再匹配每个人都使用的 GPG pub 密钥签名的新哈希,大概这些不再是 sha1sums。这可能意味着他们已经为新密钥创建了哈希,但还没有发布新的 GPG pubkey sig 来与它们一起用于 repo,因此哈希不匹配。

如果事实证明这是真的,除了令人难以置信的烦人之外,在 Google 采取行动之前,我们无能为力。

我怀疑这只是时间问题,我们应该很快就会看到修复(ish),以我们应该使用的新 GPG 公钥签名的形式。添加最新的应该很容易:

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 
Run Code Online (Sandbox Code Playgroud)

当然,假设指向新密钥的链接没有改变;我会留意那里的变化。

如果您对这些消息感到沮丧,可以通过注释掉 中的源来禁用它们/etc/apt/sources.list.d/google-chrome.list

software-properties-gtk 将允许您在添加新签名之前删除身份验证选项卡中的任何 Google 现有签名。

而且,如果你已经删除了回购文件(如今天我做了好几次),你可以设置回购正确再次安装.deb文件,只要确保你在/ etc /默认的repo_add_once变量设置为“true” / google-铬合金。该文件应如下所示:

repo_add_once="true"
repo_reenable_on_distupgrade="true"
Run Code Online (Sandbox Code Playgroud)

目前这当然不是解决任何问题,但会再次正确配置所有内容。另外,最后一点警告 - 安装 repos 的脚本通常包含 GPG 签名的副本,因此您可能需要在执行 apt-get 更新之前再次更新 a​​pt-key。

希望这个问题早日消失。


jet*_*ole 0

我不知道我是否设置了这个(我不知道为什么我会设置这个)或者 Google/Chrome 是否设置了这个但是/etc/apt/sources.list.d/google-chrome.list设置了不可变标志。设置此选项后,意味着无法更改或修改文件。

我不知道这是否只影响我(如果我出于某种原因自己设置了这个)或者这是否是根本原因并且是由 Google 设置的。

运行命令lsattr /etc/apt/sources.list.d/google-chrome.list。如果第五个字符是 ani而不是 a -,则表示设置了不可变标志。

不可变标志集:----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

请在评论中告诉我您的系统是否已设置。我无法想象为什么我会设置它,但如果它是在其他人的系统上设置的,那么我知道这来自谷歌而不是我。

更新:自从使用 etckeeper 以来,我比较了/etc/apt/sources.list.d/google-chrome.list过去和现在,并且没有看到文件本身有任何更改,这让我质疑不可变位的有效性,但是禁用不可变位似乎确实解决了我的问题。

更新:我手动重新启用不可变位然后运行,sudo apt-get update它并没有导致问题再次出现。我想知道我的答案的有效性,但我期待一些反馈来确定这是否确实导致了它。如果确实如此,那么如果文件没有更改,我不确定为什么会这样做。