巴西的 NTP 夏令时日期不正确

巴西的 NTP 夏令时日期不正确

我在使用亚马逊服务托管的 Ubuntu 服务器时遇到了问题。

NTP 夏令时日期对于巴西来说不正确,我遵循了 Ubuntu Server 文档中的所有说明,并遵循本指南,但第一个和最后一个夏季的日期不正确。

我需要将 Ubuntu Server 的巴西夏令时日期与 time.windows.com 同步。

通过 SSH 截取的服务器截图:

谷歌也错了:

巴西夏令时官方更新的消息。

Windows 已更新新日期,Ubuntu Server 的 NTP 日期时间不正确。

答案1

首先,NTP 不关心时区或夏令时或任何此类无稽之谈。NTP 以 UTC 分发时间。Linux 也以 UTC 跟踪时间。

除此之外系统或者用户可以为软件选择不同的时区。对于您的用户来说,这就像导出所需的时区一样简单:

[~]$ date
Sat 11 Aug 15:28:31 CEST 2018
[~]$ export TZ='Asia/Singapore'
[~]$ date
Sat 11 Aug 21:28:39 +08 2018

这不是 NTP 问题,而是您的时区数据配置问题。在 Ubuntu 中,此信息保存在包中tzdata

您应该检查您安装的是哪个版本apt policy tzdata,并将其与最新版本进行比较可用版本,在撰写本文时2017c-0ubuntu0.16.04适用于 16.04 和2018d-118.04。如果您拥有最新版本,并且它有不正确的定义,则应在 Launchpad 中针对该软件包提交错误,解释当前时区定义不正确的原因。

简而言之:您的问题与 ntp 无关,但tzdata与您的情况不符。

如果你想要在等待更新时手动更新 tz 信息,这是可以的。你必须下载新版本的tz 数据库,并编译。

[/tmp]$ wget "https://data.iana.org/time-zones/releases/tzdata2018e.tar.gz"
[/tmp]$ mkdir tzdata; cd tzdata
[/tmp/tzdata]$ tar -zxf ../tzdata2018e.tar.gz
[/tmp/tzdata]$ mkdir test
[/tmp/tzdata]$ zic -d test southamerica
[/tmp/tzdata]$ TZ=`pwd`/test/America/Sao_Paulo date
Sat 11 Aug 10:49:18 -03 2018
[/tmp/tzdata]$ zdump -v `pwd`/test/America/Sao_Paulo | grep 2018
/tmp/tzdata/test/America/Sao_Paulo  Sun Feb 18 01:59:59 2018 UT = Sat Feb 17 23:59:59 2018 -02 isdst=1 gmtoff=-7200
/tmp/tzdata/test/America/Sao_Paulo  Sun Feb 18 02:00:00 2018 UT = Sat Feb 17 23:00:00 2018 -03 isdst=0 gmtoff=-10800
/tmp/tzdata/test/America/Sao_Paulo  Sun Nov  4 02:59:59 2018 UT = Sat Nov  3 23:59:59 2018 -03 isdst=0 gmtoff=-10800
/tmp/tzdata/test/America/Sao_Paulo  Sun Nov  4 03:00:00 2018 UT = Sun Nov  4 01:00:00 2018 -02 isdst=1 gmtoff=-7200

如果看起来正确,您可以运行sudo zic southamerica来实际替换您的发行版为南美地区提供的 tzdata。

更多信息可以参见Debian wiki 中的 TimeZoneChange 页面。当谈到 tzdata 时,Ubuntu 的行为与 Debian 完全相同,因此该页面是 Ubuntu 的有效资源。

相关内容