You can compile timezone info files by hand if need be for Linux, OpenBSD, Solaris, or Irix. I have done this successfully on linux distros as far back as 3 years old, OpenBSD 3.8 and above, Solaris 6,7,8, and Irix 6.5. The main idea is getting the basic timezone files from NIH and compiling them for your os (using zic). Then copying them over the old files. I would backup the old timezone dir's before copying in the new ones. Just in case.
Note: for Irix to work you have to edit the /etc/TIMEZONE and enter TZ=:EST5EDT ( notice the ":" ). This tells Irix to only pay attention to the timezone file. The example was done for Eastern time zone. To compile the time zone files you get from nih.org (below) you can just run
Instead of the zic below to compile them. Irix's time zone files are in /usr/lib/locale/TZ. To check it for 2007 run
zdump -v /usr/lib/locale/TZ/EST5EDT | grep zdump 2007
For Solaris put your timezone in /etc/TIMEZONE and enter TZ=US/Eastern (for EST time zone). Solaris keeps it's timezone files in /usr/share/lib/. To check it run
zdump -v /usr/share/lib /zoneinfo/US/Eastern |grep 2007
The following example was done on OpenBSD 3.8 for northamerica. The zonefiles are being updated because of the US changing it's daylight savings time start and end dates. Note the dates have changed from the old zone file to the new zone file when they are listed.
Check the current date setting for 2007
zdump -v /etc/localtime |grep 2007
/etc/localtime Sun Apr 1 06:59:59 2007 UTC = Sun Apr 1 01:59:59 2007 EST isdst=0 /etc/localtime Sun Apr 1 07:00:00 2007 UTC = Sun Apr 1 03:00:00 2007 EDT isdst=1 /etc/localtime Sun Oct 28 05:59:59 2007 UTC = Sun Oct 28 01:59:59 2007 EDT isdst=1 /etc/localtime Sun Oct 28 06:00:00 2007 UTC = Sun Oct 28 01:00:00 2007 EST isdst=0
tar -xzvf tzdata2007c.tar.gz
zic -d zoneinfo northamerica
cp -r * /usr/share/zoneinfo/
zdump -v /etc/localtime | grep 2007
/etc/localtime Sun Mar 11 06:59:59 2007 UTC = Sun Mar 11 01:59:59 2007 ESTisdst=0 /etc/localtime Sun Mar 11 07:00:00 2007 UTC = Sun Mar 11 03:00:00 2007 EDTisdst=1 /etc/localtime Sun Nov 4 05:59:59 2007 UTC = Sun Nov 4 01:59:59 2007 EDTisdst=1 /etc/localtime Sun Nov 4 06:00:00 2007 UTC = Sun Nov 4 01:00:00 2007 ESTisdst=0
Reboot the machine to make sure all programs startup using the new TZ data.