Change of behavior: "dpkg-reconfigure -f noninteractive" unconditionally overwrites /etc/timezone now

Bug #1554806 reported by Hajo Möller on 2016-03-09
82
This bug affects 15 people
Affects Status Importance Assigned to Milestone
tzdata (Ubuntu)
Undecided
Unassigned

Bug Description

In previous versions it was possible to set the system's timezone by editing /etc/timezone before running "dpkg-reconfigure -f noninteractive tzdata".

This behavior changed, /etc/timezone gets overwritten unconditionally during "dpkg-reconfigure -f noninteractive tzdata":
---
root@xenial:/# echo "Europe/Berlin" > /etc/timezone
root@xenial:/# cat /etc/timezone
Europe/Berlin
root@xenial:/# dpkg-reconfigure -f noninteractive tzdata

Current default time zone: 'Etc/UTC'
Local time is now: Tue Mar 8 23:09:39 UTC 2016.
Universal Time is now: Tue Mar 8 23:09:39 UTC 2016.

root@xenial:/# cat /etc/timezone
Etc/UTC
---

As a workaround to programmatically set the timezone one now needs to point "/etc/localtime" to the new timezone:
---
root@xenial:/# ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime
root@xenial:/# ll /etc/localtime
lrwxrwxrwx 1 root root 33 Mar 9 00:48 /etc/localtime -> /usr/share/zoneinfo/Europe/Berlin
root@xenial:/# cat /etc/timezone
Etc/UTC
root@xenial:/# dpkg-reconfigure -f noninteractive tzdata

Current default time zone: 'Europe/Berlin'
Local time is now: Wed Mar 9 00:49:05 CET 2016.
Universal Time is now: Tue Mar 8 23:49:05 UTC 2016.

root@xenial:/# cat /etc/timezone
Europe/Berlin
---

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in tzdata (Ubuntu):
status: New → Confirmed
hackeron (hackeron) wrote :

Any workaround for this? - How would one automate setting a timezone on 16.04?

hackeron (hackeron) wrote :

Ah, sorry, didn't read the report properly. Thank you for the workaround! -- Any workaround for echo "en_GB.UTF-8 UTF-8" > /var/lib/locales/supported.d/local?

Michael Shadle (mshadle) wrote :

Looks like for the time being this is the best:

# change this based on desired locale
ln -fs /usr/share/zoneinfo/US/Pacific-New /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

ignore /etc/timezone, that seems to be properly reflected after the dpkg-reconfigure...

DawnCold (loooseleaves) wrote :

Michael's workaround works for me, but I'm waiting for fix release.

Drors (drors) wrote :

A simpler workaround that was OK for me:
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

After /etc/localtime is removed, it is regenerated properly.

Ian Marsman (imarsman) wrote :

FWIW, at least for a phusion Docker image which is based on Ubuntu 16.04, this workaround seems to work. As with most things in life related to computer administration there may be a wrinkle to this that I have not yet found.

ln -fs /usr/share/zoneinfo/America/Toronto /etc/localtime && printf 'America\nToronto\n' | dpkg-reconfigure tzdata

Lars Kruse (devel-sumpfralle) wrote :

According to the upstream package maintainer in Debian (Aurelien Jarno), /etc/localtime is the authoritive source of information, while /etc/timezone is just a Debian-specific artifact.

Thus the preferred approach for changing the timzone is indeed the change of the /etc/localtime symlink, followed by dpkg-reconfigure.

See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813226#10 and https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848143#10.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.