zoneinfo文件夹的组织

我的问题与/usr/share/zoneinfo文件夹有关。
  • 为什么有一个posix文件夹,它的内容和文件与zoneinfo相同?我只检查了几个文件,它们的校验和是一样的。
  • 为什么有一个right文件夹?据我所知,里面是包含没有闰年的时间区文件,因为每年都有全部的秒数。已经没有人再使用这个了。
  • 为什么有一个Etc目录?里面有GMT+/-数字的文件,据说这些文件没有夏令时。
  • 为什么有很多像EST5EDT、PST8PDT、CST6CDT、ROK、ROC等这样的时区文件?对我来说这毫无意义。

如果对这个文件夹和文件有其他任何信息,或者关于时区文件的一般信息,将不胜感激。

1个回答

如果您安装了tzdata源代码包,您将找到所有答案。
sudo apt-get install apt-src
mkdir tzdata && cd tzdata
apt-src install tzdata

具体地说:

posix 和 right

提供了两个不同的版本: - "posix" 版本基于协调世界时(UTC)。 - "right" 版本基于国际原子时(TAI),包括闰秒。

Etc

这些条目主要出于历史原因而存在,以便那些没有被 tz 文件覆盖的地区的人们可以使用 "zic -l" 切换到适合他们所在地区的时区。如今,tz 文件几乎覆盖了全球居住的大部分地区,现在不在 UTC 上的条目唯一实际需要的是无法使用 POSIX TZ 设置的船只。

EST5EDT, ...

GB,GB-Eire,GMT,GMT+0,GMT-0,GMT0,NZ,NZ-CHAT,PRC,ROC,ROK,UCT,UTC 存在是因为时区名称发生了变化:

该文件提供了当前时区名称和旧时区名称之间的链接。许多名称在1993年末发生了变化。

CET,CST6CDT,EET,EST,EST5EDT,HST,MET,MST,MST7MDT,PST8PDT,WET是为了向后兼容而存在的。
从Arthur David Olson,2005-12-19 我们生成下面指定的文件,以防止旧文件中包含过时信息而被留在时区二进制目录中。 我们将列表限制在以前版本的此时区软件包中出现过的名称上。 我们将其作为单独的时区而不是链接来处理,以避免如果某个地方改变是否遵守夏令时而引起问题。 我们将这些规范放在northamerica文件中,既增加了它们实际编译的机会,又避免了在另一个文件中重复美国规则的需要。

这个回答并没有完全回答原始问题。OP问为什么有三个不同的tz文件集:/user/share/zoneinfo,/usr/share/zoneinfo/right和/usr/share/zoneinfo/posix。OP指出posix子目录中的文件似乎与基本zoneinfo目录中的文件相匹配。它们是副本,而不是符号链接。那么为什么有三个单独的数据库呢? - Steger