Re: Re: Wrong time after move to new timezone
Dale <[email protected]> Thu, 7 Jan 2016 05:27:54 -0600
| Newsgroups | gmane.linux.gentoo.amd64 |
|---|---|
| Message-ID | <[email protected]> |
Duncan wrote: > Dale posted on Thu, 07 Jan 2016 00:55:31 -0600 as excerpted: > >>> You did the first part of it, setting /etc/timezone, but didn't do the >>> second part, setting /etc/localtime, which is used by glibc to know >>> your timezone. You can either do it using the command in the handbook: >>> >>> emerge --config sys-libs/timezone-data >>> >>> ... or you can do it manually by copying the appropriate timezone file >>> from /usr/share/zoneinfo/ to /etc/localtime, for AZ: >>> >>> cp /usr/share/zoneinfo/America/Phoenix /etc/localtime >>> >>> (Every time you update the timezone-data package, its pkg_postinst() >>> runs pkg_config(), which is what that emerge call does semi-manually, >>> above. pkg_config in turn copies the appropriate file to /etc/localtime >>> based on /etc/timezone, thus updating /etc/localtime with the timezone >>> file from the freshly installed timezone-data package. The cp >>> alternative simply does that same cp manually. You can of course take >>> a look at the timezone-data ebuild itself to see exactly how it does >>> it, if you like. It does get slightly fancier with its logic, setting >>> factory if the timezone is invalid, not touching the localtime file if >>> it's a symlink instead of an actual file, etc, but basically, just does >>> the above under normal circumstances. =:^) >>> >> It's been a long time since I did this but isn't that supposed to be a >> link instead of a copy? I'm pretty sure it was a link long ago but they >> may have changed it. > Take a look at the code in timezone-data's pkg_config. It's commented > and easy enough to follow for those who are comfortable with bash, as > gentooers certainly /should/ be. =:^) > > That function (which is run as part of the handbook's installation > instructions) checks for a symlink and specifically assumes the user > knows what they are doing if it's a symlink, but defaults to a cp based > on the timezone set in /etc/timezone, unless /etc/localtime is a symlink. > > So a symlink should work if a user creates it manually, but the file is > normally copied. > > I'd guess the reason is because gentoo still tries to allow for a > separate /usr, which would of course mean a dead symlink in early (pre- > mount but for /) boot, which is when openrc tries to set the time, in > ordered to properly check config file modification times to see if it > needs to recache service ordering. Openrc then falls back to I think > UTC, which will likely trigger a time-skew complaint when the cache files > appear to be from the future (for folks in UTC-minus timezones, anyway). > > For people with /usr/share/zoneinfo/* on / (or who use an initr* that > mounts /usr), the symlink should work fine, and is arguably easier to > check, since you can just check where the symlink points instead of > having to diff against the zoneinfo timezone file you /think/ it should > be to be sure it's correct (which is what I did here, checking my own > system to be sure it was set that way, before posting). > > But while my /usr is on / (and I'm on systemd so that particular issue > wouldn't apply, but others might), I've left localtime as an actual file, > because that's the default solution, thus most widely tested and least > likely to cause additional bugs. I don't hesitate to diverge from the > defaults where I have some reason to prefer doing it differently, and > there are indeed lots of places I do just that and I sometimes see bugs > nobody else seems to see as a result, but here, I don't really care, so > I've picked my additional bug risks and don't find the need to make this > one of them. =:^) > I'll take your word for it because I don't do bash. I just need to remember that it is changed now. Dale :-) :-)