Dpkg-reconfigure çağırmadan önce, debconf ile için ayrıca kaldırmak gerekir /etc/localtime
ve /etc/timezone
. Ayrıca iyi huylu olmayan olası ekstra alanlara (sorunuzda olduğu gibi!) Dikkat edin.
Yani (Debian Stretch'te) çalışan "debconf yolu" şöyle olur:
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select Madrid" | debconf-set-selections
rm -f /etc/localtime /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Bunun nedeni, tzdata yapılandırma betiğinin akıllı olmaya çalışmasıdır ve daha önce yapılandırılmışsa veya kullanıcı saat dilimleriyle manuel olarak karışmışsa, farklı davranır.
EKSTRA
Benzer sorunu kendiniz hata ayıklamak için önce şunları yaparsınız:
export DEBCONF_DEBUG=developer
aşağıdaki bilgileri sağlar:
# dpkg-reconfigure -f noninteractive tzdata
debconf (developer): starting /var/lib/dpkg/info/tzdata.config reconfigure 2018e-0+deb9u1
debconf (developer): <-- VERSION 2.0
debconf (developer): --> 0 2.0
debconf (developer): <-- CAPB backup
debconf (developer): --> 0 multiselect escape
debconf (developer): <-- SET tzdata/Areas Etc
debconf (developer): --> 0 value set
debconf (developer): <-- SET tzdata/Zones/Etc UTC
debconf (developer): --> 0 value set
debconf (developer): <-- INPUT high tzdata/Areas
debconf (developer): --> 30 question skipped
debconf (developer): <-- GO
debconf (developer): --> 0 ok
debconf (developer): <-- GET tzdata/Areas
debconf (developer): --> 0 Etc
debconf (developer): <-- INPUT high tzdata/Zones/Etc
debconf (developer): --> 30 question skipped
debconf (developer): <-- GO
debconf (developer): --> 0 ok
debconf (developer): starting /var/lib/dpkg/info/tzdata.postinst configure 2018e-0+deb9u1
debconf (developer): <-- VERSION 2.0
debconf (developer): --> 0 2.0
debconf (developer): <-- GET tzdata/Areas
debconf (developer): --> 0 Etc
debconf (developer): <-- GET tzdata/Zones/Etc
debconf (developer): --> 0 UTC
debconf (developer): <-- STOP
bu , kullanıcıya sormadan önce değerleri zorla ayarladığını gösterir (böylece, ayarladığınız değerlerin üzerine yazılır)debconf-set-selections
).
Sonra sen shebang değiştirecek /var/lib/dpkg/info/tzdata.config
gelen #!/bin/sh
etmek #!/bin/sh -x
ve bunu yaptığı görecekti program akışını, izleyin:
+ [ -L /etc/localtime ]
+ readlink /etc/localtime
+ TIMEZONE=/usr/share/zoneinfo/Etc/UTC
/var/lib/dpkg/info/tzdata.config
size baktığınızda bu bulacaksınız:
# If /etc/localtime is a link, update /etc/timezone
if [ -L /etc/localtime ] ; then
TIMEZONE="$(readlink /etc/localtime)"
@fiction cevabının neden çalıştığını açıklar. Ayrıca betiğe daha fazla baktığınızda, '/ etc / localtime' öğesini kaldırırsanız @andrekeller yanıtının daha yeni Debian sürümlerinde de çalıştığını görürsünüz.
Umarım bu hata ayıklama yardımı, Debian'ın bir sonraki sürümü betiği daha akıllı hale getirdiğinde ve mevcut yanıtlar da geçersiz olduğunda size yardımcı olacaktır. Debconf hata ayıklama hakkında daha fazla bilgi debconf-devel'de bulunabilir (7)