更新 ubuntu docker 容器时出现“发布尚未生效”

更新 ubuntu docker 容器时出现“发布尚未生效”

我正在尝试使用 dockerfile 更新 ubuntu 容器。

RUN apt-get update -y

但我收到了以下错误。

E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease is not valid yet (invalid for another 9h 14min 10s). Updates for this repository will not be applied.
E: Release file for http://archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease is not valid yet (invalid for another 9h 14min 16s). Updates for this repository will not be applied.
E: Release file for http://archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease is not valid yet (invalid for another 9h 14min 35s). Updates for this repository will not be applied.

我检查了同一问题的其他一些解决方案,例如Acquire::Check-Valid-Until=false像下面这样添加到 apt-get

RUN apt-get -o Acquire::Check-Valid-Until="false" update -y

上述操作也失败了。

答案1

由于系统时钟不匹配,请重新启动docker(或重新启动您的计算机)。

我花了几个小时试图弄清楚发生了什么,然后重新启动并立即解决了问题。

答案2

更正您的系统时钟。(在评论中,我还建议检查时钟和时区是否不匹配

參閱更改系统时钟的命令行语句是什么?用于设置系统时间(我建议去timedatectl回答如果使用“现代” Ubuntu 版本),或者http://manpages.ubuntu.com/manpages/xenial/man8/hwclock.8.html(如果您想直接设置硬件时钟;但请记住将其与您的时区配置相匹配)

答案3

我已经解决了更新时间的问题:

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
sudo apt update

答案4

这对我不起作用:

apt-get -o Acquire::Check-Valid-Until="false" update

但事实确实如此:

apt-get -o Acquire::Max-FutureTime=86400 update

86400 是一天的秒数。如果你的时钟误差超过这个数字,你需要增加它。

警告:引号会导致它将数字视为字符串。shell 通常会删除一组引号,但-o 'Acquire::Max-FutureTime="86400"'shell 只会删除单引号,而 apt-get 会看到数字周围的双引号。

我尝试了这个,因为GetNotBefore()在 acquire-item.cc 返回时d->NotBefore似乎只受到影响Acquire::Max-FutureTime

https://github.com/Debian/apt/blob/master/apt-pkg/acquire-item.cc#L1758-L1775 https://github.com/Debian/apt/blob/master/apt-pkg/deb/debmetaindex.cc#L543-L555

相关内容