我需要做什么使我的Red Hat Enterprise Linux 2.1系统配合2006年和2007年的在几个国家推行的夏令时间(DST)改变?
解决方法:

在2006和2007年有一些国家改变了使用夏令时间(DST)的日期。最早的改变是2006年三月二十六日在澳洲和一部分的美国印地安那州使用夏令时间。(参考:http://aa.usno.navy.mil/faq/docs/daylight_time.html)

重点:

1. 在2006年,澳洲因为英联邦运动会把夏令时间的完结日期推迟了一周,由2006年三月二十五日淩晨3时改到2006年四月二日淩晨3时。

2. 执行2005年的美国能源法案。由2007年三月起,美国的夏令时间改由每年三月的第二个星期日开始,在十一月的第一个星期日完结。

3. 加拿大的魁北克省(QC),安大略省(ON),新斯科舍(NS),努纳武特(NU),萨斯喀彻温(SK),马尼托巴(MB),新不伦瑞克(NB),爱德华王子岛(PE),艾伯塔(AB),不列颠哥伦比亚(BC),纽芬兰与拉布拉多(NL),西北地区(NT)和育空(YK)将在2007年三月份跟随美国所作的夏令时间改变。

4. 西澳大利亚州正进行三年的夏令时间试验,在2006年十二月三日开始,在三月的最后一个星期日完结。有关详情可参考另一篇文章:http://kbase.redhat.com/faq/FAQ_61_9647.shtm

5. 巴哈马将在2007年三月份跟随美国所作的夏令时间改变。

Red Hat Enterprise Linux 2.1用户可以选择三个方法中的其中一个去令系统得到夏令时间的更新:

1. 把glibc软件包升级到以下版本:

      	
      	glibc-2.2.4-32.23
      	glibc-common-2.2.4-32.23
      	glibc-devel-2.2.4-32.23
      	glibc-profile-2.2.4-32.23
      	nscd-2.2.4-32.23

执行 up2date -u <package-name> 命令能升级软件包。

然后执行system-config-date命令并选需要的时区。这样就会更新/etc/localtime文件。

2. 在2006年七月,Red Hat发布了glibc的升级,跟Red Hat Enterprise Linux 3和4一样把时区资料分别出来成为tzdata软件包。你可以升级以下的软件包:

tzdata-2006m-3.el2_1
glibc-common- 2.2.4-32.25

然后执行system-config-date命令并选需要的时区。这样就会更新/etc/localtime文件。

3. 手动升级tzdata文件 (不用rpm)

1. 用archive manager把tzdata-2006m-3.el2_1.rpm解压到一个目录。这样会创建出usr/share/的目录。 2. 用解压出来的的usr/share/zoneinfo目录替换系统中的整个/usr/share/zoneinfo目录。 3. 要设定本地时区,把适合的文件从/usr/share/zoneinfo抄到/etc/localtime文件。例如:你想把系统设定成纽约时区:

# cp /usr/share/zoneinfo/America/New_York /etc/localtime

如果系统是使用TZ环境变量,那么只需要更新/usr/share/zoneinfo就足够。

当更新完成后,所有依赖於/etc/localtime的程序都需要重启。最简单的方法是把整个系统重启,以确保所有程序都使用更新了的时区资料。

要测试系统有没有更新,可执行以下命令(假设你使用有DST改变的时区):

zdump -v /etc/localtime |grep 2007

如果显时DST改变的日期是正确,就代表更新成功。

参考: http://rhn.redhat.com/errata/RHEA-2006-0282.html

http://rhn.redhat.com/errata/RHEA-2006-0279.html