A lot of people run older releases of FreeBSD, and probably came across this problem of updating the time zone info. Unfortunately for me, I inherited the box and its ports were way outdated - they wouldn’t even update. Rather than having to go through downloading the ports package, and extracting it, I thought I’d just do a little bit of googling around and see how to update the zoneinfo manually, then work on upgrading the OS completely later. Here’s what I found - its pretty straight forward:
myfreebsd> fetch ftp://elsie.nci.nih.gov/pub/tzdata2007c.tar.gz
/// As I just needed northamerica, that is all I extracted from the tzdata pack
myfreebsd> tar -xvzf tzdata2007c.tar.gz northamerica
/// Use zic to compile
myfreebsd> zic northamerica
/// Run tzsetup and select the timezone so the info can be written to /etc/localtime
myfreebsd> tzsetup
Please note that the tzdata?????.tar.gz file is frequently updated, so the above script should reflect that. You can find the latest file at ftp://elsie.nci.nih.gov/pub/.
That should do it. To test, change the date to March 12, and see if the time zone changes from ‘S’ to ‘D’, e.g. CST to CDT.
Do let me know if this does not work for you, or if you have any suggestions for improvement to this tiny script.