On 2016-02-02 00:23, YAMADA Tsuyoshi wrote:
> 2016-02-01 16:43 GMT+09:00 Aurelien Jarno <aurel...@aurel32.net>:
> > I don't think it is a bug. The correct way to configure the timezone has
> > always been to change /etc/localtime symlink, ie in your case by doing
> > "ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime". This is what
> > desktop environments do when changing the timezone and it is what
> > systemd expects.
> >
> > Changing /etc/timezone worked in some cases before as we use to store
> > /etc/localtime as a copy of the file instead of a symlink when possible,
> > in order to allow the timezone to be correct without a /usr partition.
> > This is not needed anymore given /usr is now mount from the initramfs
> > when needed.
> 
> Hmm, I understand the correct way, but many people are using incorrect way.
> ("echo Foo/Bar > /etc/timezone" and "dpkg-reconfigure -f noninteractive 
> tzdata")
> 
> Please see github:
> https://github.com/search?q=%2Fetc%2Ftimezone+dpkg-reconfigure+noninteractive+tzdata&type=Code&utf8=%E2%9C%93
> 
> There are about 4,000 codes!
> 
> I think this incompatibility for those codes is not so good.
> 
> I propose a patch for debian/tzdata.config (/var/lib/dpkg/info/tzdata.config):
> 
>   --- /tmp/tzdata.config.bak 2016-01-29 20:28:52.000000000 +0000
>   +++ tzdata.config 2016-02-01 14:42:09.462282218 +0000
>   @@ -326,15 +326,6 @@
>        esac
>    }
> 
>   -# If /etc/localtime is a link, update /etc/timezone
>   -if [ -L /etc/localtime ] ; then
>   -    TIMEZONE="$(readlink /etc/localtime)"
>   -    TIMEZONE="${TIMEZONE#/usr/share/zoneinfo/}"
>   -    if [ -f "/usr/share/zoneinfo/$TIMEZONE" ] ; then
>   -        echo ${TIMEZONE} > /etc/timezone
>   -    fi
>   -fi
>   -
>    # Read /etc/timezone
>    if [ -e /etc/timezone ]; then
>        TIMEZONE="$(head -n 1 /etc/timezone)"
>   @@ -350,6 +341,15 @@
>        fi
>    fi
> 
>   +# If /etc/localtime is a link, update /etc/timezone
>   +if [ -L /etc/localtime ] ; then
>   +    TIMEZONE="$(readlink /etc/localtime)"
>   +    TIMEZONE="${TIMEZONE#/usr/share/zoneinfo/}"
>   +    if [ -f "/usr/share/zoneinfo/$TIMEZONE" ] ; then
>   +        echo ${TIMEZONE} > /etc/timezone
>   +    fi
>   +fi
>   +
>    # The timezone is already configured
>    if [ -e /etc/timezone ] && [ -e /etc/localtime ] ; then
>        # Don't ask the user, except if he/she explicitely asked that
> 
> 
> This patch will keep compatibility like this:
> 
>   root@031baca8faac:~# echo Asia/Tokyo > /etc/timezone
>   root@031baca8faac:~# readlink /etc/localtime
>   /usr/share/zoneinfo/Etc/UTC
>   root@031baca8faac:~# dpkg-reconfigure -f noninteractive tzdata
> 
>   Current default time zone: 'Asia/Tokyo'
>   Local time is now:      Mon Feb  1 23:45:19 JST 2016.
>   Universal Time is now:  Mon Feb  1 14:45:19 UTC 2016.
> 
>   root@031baca8faac:~# cat /etc/timezone
>   Asia/Tokyo
>   root@031baca8faac:~# readlink /etc/localtime
>   /usr/share/zoneinfo/Asia/Tokyo
> 
> Could you please consider this patch?

This patch will break all software which change /etc/localtime without
changing /etc/timezone. I don't know if it is better to break the
compatibility with external scripts or with software we ship in debian.

Aurelien

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurel...@aurel32.net                 http://www.aurel32.net

Reply via email to