After looking at this further, I think this is the best we can do for noble.
Among other things, the reason the downstream patch that supported /etc/timezone in systemd was dropped is that it was difficult to keep correct as the locations in the codebase which referenced /etc/localtime grew/changed. While other components may use /etc/timezone, that file is owned by tzdata, and so that package is responsible for updating the contents. I think pointing to this[1] discourse post, and in particular this[2] comment, is the best way to document the expected behavior. [1] https://discourse.ubuntu.com/t/how-to-change-the-time-zone-in-ubuntu-using-the-command-line/35307 [2] https://discourse.ubuntu.com/t/how-to-change-the-time-zone-in-ubuntu-using-the-command-line/35307/2 -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to systemd in Ubuntu. https://bugs.launchpad.net/bugs/2103839 Title: timedatectl set-timezone does not update /etc/timezone, leaving system with inconsistent time zone setting Status in systemd package in Ubuntu: New Status in systemd source package in Noble: New Status in systemd source package in Oracular: New Bug description: In Ubuntu 24.04 server, setting the system time zone via systemd's timedatectl fails to update the contents of /etc/timezone. In previous LTS server releases, timedatectl updated this file without any issue, so this is new faulty behavior. Because there are several different ways to query for the system's time zone (e.g., timedatectl, /etc/localtime, /etc/timezone), this bug leaves the system time zone in an inconsistent state, with the answer depending on the query method. For example, I discovered this bug when installing the latest version of Jenkins on Ubuntu 24.04, where Jenkins insisted my server was on UTC even though timedatectl would report back "America/Chicago". It turned out that Jenkins was reading the system time zone from /etc/timezone, which had never been updated after I set the timezone via timedatectl. I don't know for certain, but I believe that /etc/timezone is a common way for Java-based applications to read the system time zone. I think there has been talk of removing /etc/timezone entirely from Debian, since it could be considered redundant, which may be why timedatectl has changed its behavior here. I would be fine with that solution except for the fact that when I delete /etc/timezone on Ubuntu 24.04, it keeps getting recreated. I believe whenever the tzdata package is updated, that regenerates /etc/timezone, and a "dpkg-reconfigure tzdata" certainly does. If nothing else, there is an inconsistency in Ubuntu 24.04 between the behavior of timedatectl and the behavior of tzdata, and this inconsistent behavior can lead to an inconsistent time zone setting. Steps to reproduce the bug: ``` $ timedatectl show --property=Timezone Timezone=America/New_York $ ls -la /etc/localtime lrwxrwxrwx 1 root root 36 Mar 21 21:46 /etc/localtime -> /usr/share/zoneinfo/America/New_York $ cat /etc/timezone America/New_York $ sudo timedatectl set-timezone 'America/Chicago' $ timedatectl show --property=Timezone Timezone=America/Chicago $ ls -la /etc/localtime lrwxrwxrwx 1 root root 35 Mar 21 20:51 /etc/localtime -> /usr/share/zoneinfo/America/Chicago $ cat /etc/timezone America/New_York $ sudo dpkg-reconfigure --frontend noninteractive tzdata 2> /dev/null $ cat /etc/timezone America/Chicago ``` ProblemType: Bug DistroRelease: Ubuntu 24.04 Package: systemd 255.4-1ubuntu8.5 ProcVersionSignature: Ubuntu 6.8.0-55.57-generic 6.8.12 Uname: Linux 6.8.0-55-generic x86_64 ApportVersion: 2.28.1-0ubuntu3.3 Architecture: amd64 CasperMD5CheckResult: pass Date: Fri Mar 21 18:20:28 2025 InstallationDate: Installed on 2025-02-11 (38 days ago) InstallationMedia: Ubuntu-Server 24.04.1 LTS "Noble Numbat" - Release amd64 (20240827) Lsusb: Error: command ['lsusb'] failed with exit code 1: Lsusb-t: Lsusb-v: Error: command ['lsusb', '-v'] failed with exit code 1: MachineType: VMware, Inc. VMware7,1 ProcEnviron: LANG=en_US.UTF-8 PATH=(custom, no user) SHELL=/bin/bash TERM=xterm ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-6.8.0-55-generic root=UUID=d1d2bd07-2fa1-4f46-b54e-6b249e25a778 ro SourcePackage: systemd UpgradeStatus: No upgrade log present (probably fresh install) dmi.bios.date: 08/07/2020 dmi.bios.vendor: VMware, Inc. dmi.bios.version: VMW71.00V.16707776.B64.2008070230 dmi.board.name: 440BX Desktop Reference Platform dmi.board.vendor: Intel Corporation dmi.board.version: None dmi.chassis.asset.tag: No Asset Tag dmi.chassis.type: 1 dmi.chassis.vendor: No Enclosure dmi.chassis.version: N/A dmi.modalias: dmi:bvnVMware,Inc.:bvrVMW71.00V.16707776.B64.2008070230:bd08/07/2020:svnVMware,Inc.:pnVMware7,1:pvrNone:rvnIntelCorporation:rn440BXDesktopReferencePlatform:rvrNone:cvnNoEnclosure:ct1:cvrN/A:sku: dmi.product.name: VMware7,1 dmi.product.version: None dmi.sys.vendor: VMware, Inc. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/2103839/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp