डीपकाक-रीकॉन्फ़िगर कॉल करने से पहले डिबेंकफ़ का उपयोग करने के लिए, आपको हटाने /etc/localtime
और /etc/timezone
। इसके अलावा संभावित अतिरिक्त स्थान से सावधान रहें (जैसा कि आपके प्रश्न में!) जो सौम्य नहीं हैं।
तो "डेबोनफ रास्ता" जो काम करता है (डेबियन स्ट्रेच में) होगा:
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
इसका कारण यह है कि tzdata config स्क्रिप्ट स्मार्ट होने की कोशिश करती है, और यदि इसे पहले कभी कॉन्फ़िगर किया गया था या उपयोगकर्ता ने टाइमज़ोन के साथ मैन्युअल रूप से मध्यस्थता की है, तो अलग तरीके से व्यवहार करेगा।
अतिरिक्त
इसी तरह की समस्या को ख़ुद करने के लिए, आप सबसे पहले करेंगे:
export DEBCONF_DEBUG=developer
जो निम्नलिखित जानकारी प्रदान करेगा:
# 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
जो यह प्रदर्शित होगा कि यह जबरदस्ती सेट उनके लिए उपयोगकर्ता पूछ (इस प्रकार ये मान के साथ सेट अधिलेखन से पहले मान debconf-set-selections
)।
तो फिर तुम में मामला बदल जाएगा /var/lib/dpkg/info/tzdata.config
से #!/bin/sh
करने के लिए #!/bin/sh -x
, और कार्यक्रम के प्रवाह, जहां कि यह करता है देखना होगा का पालन करें:
+ [ -L /etc/localtime ]
+ readlink /etc/localtime
+ TIMEZONE=/usr/share/zoneinfo/Etc/UTC
आपको देखकर /var/lib/dpkg/info/tzdata.config
लगेगा:
# If /etc/localtime is a link, update /etc/timezone
if [ -L /etc/localtime ] ; then
TIMEZONE="$(readlink /etc/localtime)"
जो बताता है कि @fiction उत्तर क्यों काम करता है। इसके अलावा स्क्रिप्ट में अधिक देखने पर, आप पाएंगे कि @andrekeller का उत्तर नए डेबियन संस्करणों में भी काम करता है यदि आप '/ etc / टाइमटाइम' को हटाते हैं।
उम्मीद है कि यह डिबगिंग मदद आपको तब मदद करेगी जब डेबियन का अगला संस्करण स्क्रिप्ट को और भी स्मार्ट बनाता है और मौजूदा उत्तर भी अमान्य हो गए। डीबगिंग पर अधिक जानकारी डिबेंक-डेवेल (7) में मिल सकती है