sudo apt update 错误: "发布文件尚未有效"

每次我尝试执行sudo apt update命令时,都会出现这个错误。
Hit:1 ubuntu bionic InRelease
Ign:3 linux/chrome/deb stable InRelease                   
Get:2 /ubuntu bionic-updates InRelease [88.7 kB]   
Get:5 /linux/chrome/deb stable Release [943 B]             
Get:6 http://dl.google.com/linux/chrome/deb stable Release.gpg [819 B]         
Get:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] 
Get:7 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]    
Reading package lists... Done                                 
E: Release file for http://dl.google.com/linux/chrome/deb/dists/stable/Release is not valid yet (invalid for another 2h 45min 28s). Updates for this repository will not be applied.
E: Release file for http://us.archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease is not valid yet (invalid for another 4h 34min 33s). Updates for this repository will not be applied.
E: Release file for http://us.archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease is not valid yet (invalid for another 1h 22min 16s). Updates for this repository will not be applied.
E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease is not valid yet (invalid for another 4h 32min 36s). 

此存储库的更新将不会被应用。

我已将时区重置为UTC,但这并没有起作用。
我还找到了另一个答案,他们说我应该尝试

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

但那也没有起作用。 我两次都遇到了同样的错误。

5你是否比较过当前的时间戳与实际的协调世界时?你有双重启动系统吗?你是否进行过时间同步,以确保计算机时钟同步正常?如果你使用双重启动系统,Windows 可能会修改系统时钟(还要检查桌面设置中的时区设置)。 - Thomas Ward
我使用Windows 10家庭版双启动,刚刚同步了时间以使Ubuntu使用本地时间。尝试再次更新,但遗憾的是仍然出现完全相同的错误。有什么想法吗? - user897956
3这个回答解决了你的问题吗?在更新Ubuntu Docker容器时出现“Release is not valid yet”错误 - rofrol
有点显而易见,但是对我来说重新启动Windows解决了这个问题(双系统与Ubuntu)。 - Antonio
在我的情况下,我正在运行一个Virtual Box虚拟机,然后我的笔记本电脑因为更新而关机,导致虚拟机进入了保存状态。当恢复时,虚拟机的时钟与主机不同步。我只需重新启动虚拟机,它就会恢复正确的时间。 - Jules Clements
如果在Windows上使用Docker时出现此问题,只需将Windows时间与实际当前时间同步,问题就会解决。如果您使用双启动(dual boot)等功能,Windows上的时间可能会不准确。 - Ini
23个回答

运行:
sudo hwclock --hctosys 

这个命令从您的Windows机器的RTC获取最新时间,并将系统时间设置为该时间。

1这个命令从你的Windows机器的RTC获取最新时间,并将系统时间设置为那个时间。 - rosterloh
9对我来说很有效..我的Docker桌面使用WSL2作为底层,有时Ubuntu和Windows主机之间的时钟会出现(很大的)偏差。这个命令可以帮助解决这个问题。 - Frederik
1这个方法有效。但是如果你正在使用WSL,你需要重新启动它。谢谢! - nwaweru
1这个命令可以简化为 sudo hwclock -s。从命令帮助菜单 (hwclock -h) 中,选项 -s--hctosys 是相同的:-s, --hctosys 从 RTC 设置系统时间 - razzak
@nwaweru 我没有重新启动就成功了。 - Elazar
如果您在Windows上使用WSL,在同步Windows系统时间后,请通过输入wsl --shutdown来关闭WSL,然后通过在命令提示符或Windows终端中输入wsl来重新启动发行版。 - FreeMind
1在Windows上使用WSL,我不需要重新启动。 - Mike L'Angelo
这个有效!但是有人能解释为什么吗?为什么我们需要正确的时间才能更新软件包呢? - undefined

这是一个时区问题。尝试重新启动您的Docker主机。对我来说有效。

2你是从哪里得到这个印象,认为这与Docker有关? - guntbert
2@guntbert 这个答案对我来说看起来不错。也许他从这个问题中得到了这是与Docker相关的想法:在更新Ubuntu Docker容器时出现“Release is not valid yet” - karel
4对于使用Docker和wsl后端的Windows用户:我还需要使用wsl --shutdown命令重启wsl,然后重新启动Docker主机。 - Guido
3这对我在Podman上有所帮助,重新启动后就正常工作了。 - Mahlatse Makalancheche
在我的情况下,这是一个时区问题 - 当Windows启动时,它会自动设置错误的时间(我尝试修复过很多次,但似乎除非重新安装系统,否则无法解决)。 - maciejwww
我也可以确认,在我的 MacBook 上(使用 Podman)它也起作用了。对我来说,我需要重新启动 Podman 机器:podman machine stop && podman machine start - Tuhin


2apt-get -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false update 临时解决此问题。 - karel
apt-get -o Acquire::Check-Valid-Until=false update已经足够了,我遇到了与问题中相同的错误。我发现了这个更简短的版本,没有-o Acquire::Check-Date=false,用于稍微不同的错误。这是那里的被接受答案,我猜这里也不需要-o Acquire::Check-Date=false - questionto42
sudo apt-get -o Acquire::Check-Valid-Until=false update 应该更改为 sudo apt-get -o Acquire::Max-FutureTime=86400 update - SUF
这个在我用 podman 构建容器的时候有效。不过我没有尝试过更短的版本。 - Tuhin

在我的情况下:
- Microsoft Windows [版本 10.0.19041.630]; - WSL 版本 2; - Ubuntu-20.04;
`date` 命令报告了错误的日期和时间。 我使用了以下内容:
sudo apt install ntp 
sudo service ntp restart 

然后,date命令会报告正确的日期和时间。现在sudo apt update可以正常工作了。

1对我来说没用 - synek317

在Ubuntu 18.04服务器上进行测试:
  1. 检查BIOS日期和时间,同时检查主板上的电池,如有需要请更换。
  2. 重新启动。执行命令date验证日期和时间是否正确。
  3. 再次执行sudo apt update。问题已解决。

1对我来说很有效,我有Ubuntu和Windows双系统,你可能知道双系统在切换时会有时间问题(我知道通过更改timedatectl set-localrtc 1来解决,但我不喜欢这样做,因为通常我只使用Ubuntu)。所以在我的Windows中,我内置了Ubuntu bash,然而当我切换到Windows时,时间会发生变化,当我在Windows中的Ubuntu上运行sudo apt update时,会出现错误,直到我重新更改时间才会恢复正常。谢谢。 - Negrito
#3对我起作用。在systemd-timesyncd.service有机会更新时钟之前,我运行了apt update命令。通过查看一些谷歌建议的答案,使服务有机会更新时钟,我的第二个apt update按预期工作了。 - iAmJeff

我遇到了同样的问题。 我通过安装ntp解决了这个问题。
apt install ntp

在安装过程中选择您的时区。

如果您已经安装了ntp,请使用以下命令选择正确的时区。

dpkg-reconfigure tzdata

7没有其他解决方案起作用,你救了我一命。 - Alexander Vocaet
1我必须使用tzdata设置我的时区,然后进入“设置”-->“日期和时间”设置正确的时间,然后才能进行更新。谢谢! - Matt Popovich
1这在2023年8月28日对我有效。主机操作系统:Windows 11,WSL:2,WSL发行版:Ubuntu 20.04.6 LTS - user2989643

安装ntp软件包:
sudo apt install ntp
sudo echo "ip_adress" >> /etc/ntp
sed -i 's/pool /#pool /g' /etc/ntp.conf
sudo systemctl restart ntp.service

然后:

sudo apt update

1谢谢,这对我有用,但我认为你应该更好地解释你的答案。 - clay
'ip_adress' 正确吗?看起来像是个打字错误。 - Erik
我在/etc/ntp中回显ip_address时遇到了“权限被拒绝”。 - zeroDivider
IP地址是NTP服务器的IP地址。你可以写成ntp.yourntpserver.com。 - ÖMER ÇAKMAK

在我的情况下,问题的根源是我在Windows 10和Ubuntu 18.04之间进行双重启动,每个操作系统以不同的方式解释RTC中存储的时间(Windows为本地时间,Ubuntu为UTC)。我的解决方法是通过运行以下命令将Ubuntu更改为将时间解释为本地时间:
timedatectl set-local-rtc 1

我在另一个AskUbuntu的帖子中找到了这个解决方案。
编辑:自从我最初回答以来,我已经决定将Windows切换到UTC时间,而不是将Ubuntu切换到本地时间。这可以通过一个注册表键完成。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
  "RealTimeIsUniversal"=qword:00000001

这对我有效,所以我已经点赞了。我希望如果我使用Windows,时间不会改变。 @carlton - Pranav

如果有人在WSL2中遇到类似的问题,那么罪魁祸首可能是错误的系统日期(可以使用“date”命令进行检查)。您可以关注此github issue以获取更新。以下命令来自同一GitHub讨论,对我解决了目前的问题。
sudo hwclock -s

不同步时间给我。 - Nearoo

上述的解决方案对我没有起作用。我不得不手动更改日期,使用以下命令:
date -s '2021-03-18 12:34:12'

然后,sudo apt-get update正常工作了。

1谢谢!实际上,这对我来说是唯一可行的解决方案,因为我无法做其他任何事情来更改日期。 - Kulgar