Date: Fri, 9 Aug 2024 11:10:52 -0400 From: John Baldwin <jhb@FreeBSD.org> To: "Sean C. Farley" <scf@FreeBSD.org>, Ed Maste <emaste@FreeBSD.org> Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: Re: git: fc43a1b6842a - stable/14 - tzsetup: symlink /etc/localtime instead of copying Message-ID: <5779dd3b-7134-4e72-bc8d-efa64cebddf0@FreeBSD.org> In-Reply-To: <784ce21d-a604-bb91-c52e-29c78e2bb6e4@FreeBSD.org> References: <202408011538.471FcJDS026885@gitrepo.freebsd.org> <784ce21d-a604-bb91-c52e-29c78e2bb6e4@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 8/8/24 00:35, Sean C. Farley wrote: > On Thu, 1 Aug 2024, Ed Maste wrote: > >> The branch stable/14 has been updated by emaste: >> >> URL: https://cgit.FreeBSD.org/src/commit/?id=fc43a1b6842afa806dfd7ba48de5bece63d04456 >> >> commit fc43a1b6842afa806dfd7ba48de5bece63d04456 >> Author: Ed Maste <emaste@FreeBSD.org> >> AuthorDate: 2022-10-14 16:44:35 +0000 >> Commit: Ed Maste <emaste@FreeBSD.org> >> CommitDate: 2024-08-01 15:11:45 +0000 >> >> tzsetup: symlink /etc/localtime instead of copying >> >> Using a symlink means that new timezone data (installed by an errata >> update, say) will be usable without having to be copied again. >> >> Reviewed by: bapt, kevans, philip >> Sponsored by: The FreeBSD Foundation >> Differential Revision: https://reviews.freebsd.org/D37005 >> >> (cherry picked from commit 5e16809c953f4cd19fadb1767469dec319de0353) > > I ran across an issue with this when using "etcupdate -D" to update a > jail from the host. "tzsetup -r -C /tmp/chroot", as called by > etcupdate, prepends the path of the chroot to the link which breaks > things inside the jail. > > For example, if you run the following: > mkdir -p /tmp/chroot/etc > mkdir -p /tmp/chroot/usr/share > mkdir -p /tmp/chroot/var/db > ln -s /usr/share/misc /tmp/chroot/usr/share/misc > ln -s /usr/share/zoneinfo /tmp/chroot/usr/share/zoneinfo > cp /var/db/zoneinfo /tmp/chroot/var/db/. > tzsetup -C /tmp/chroot -r > > The result will be the following: > /tmp/chroot/etc/localtime@ -> /tmp/chroot//usr/share/zoneinfo/America/Indiana/Indianapolis Hmm, we also intentionally moved away from symlinks to copying many years ago. We added /var/db/zoneinfo so that tzsetup -r would know which file to copy into /etc after we moved away from the symlink I thought? It looks like tzsetup switched to copying by default longer ago than I remembered though in 1996 (commit c78cc02b89f6f5e562e5cf93d54faaa1bd79dfef), though that replaced an older change that switched from copying to symbolic links (2d71a1f121460406695c914b4f35e2e365010855). Presumably though -r shouldn't do anything if /etc/localtime is a symlink? I thought the only reason it was added was due to using copies: commit ada5f18a1b161e4fd99966444f85ca51d5a3fd8a Author: Edwin Groothuis <edwin@FreeBSD.org> Date: Tue Oct 20 06:54:31 2009 +0000 Instead of having to know which timezone was picked last time, you now can run "tzsetup -r" which will reinstall the last choice. This data is recorded in /var/db/zoneinfo. MFC after: 1 week Notes: svn path=/head/; revision=198267 -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5779dd3b-7134-4e72-bc8d-efa64cebddf0>