Ich möchte ein Skript einrichten, mit dem die Zeitzone auf einem Computer automatisch geändert wird (unter Ubuntu 11.10) und die richtigen Werte für die debconf
Datenbank festgelegt werden. Ich habe Folgendes versucht, aber es funktioniert nicht (am Ende bleibt die aktuelle Zeitzone unverändert, und wenn ich den dpkg-reconfigure tzdata
Befehl manuell ausführe , sind die ausgewählten Werte in der Tat die alten):
#!/bin/sh -e
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select Madrid" | debconf-set-selections
echo "tzdata tzdata/Zones/America select " | debconf-set-selections
dpkg-reconfigure -f noninteractive tzdata
Also, jetzt mache ich es mit den Dateien /etc/localtime
und /etc/timezone
direkt, aber ich bevorzuge lieber die dpkg-reconfigure
und debconf
Weise.
Ich habe gerade herausgefunden, dass Sie mit Debian Stretch (9) auch / etc / localtime ändern müssen, also so etwas wie:
wird gebraucht. Um die Antwort von andrekeller zu ändern, benötigen Sie:
quelle
ln -fs ....
Zeile durch simple ersetzenrm -f /etc/localtime
, und es wird immer noch funktionieren (und debconf würde/etc/localtime
mit korrekten Werten neu erstellen ); Siehe meine Antwort für Details.Um debconf zu verwenden, müssen Sie vor dem Aufruf von dpkg-reconfigure auch
/etc/localtime
und entfernen/etc/timezone
. Achten Sie auch auf möglichen zusätzlichen Platz (wie in Ihrer Frage!), Der nicht harmlos ist.Also "debconf way", das funktioniert (in Debian Stretch), wäre:
Der Grund dafür ist, dass das tzdata-Konfigurationsskript versucht, intelligent zu sein, und sich anders verhält, wenn es zuvor konfiguriert wurde oder der Benutzer sich manuell in Zeitzonen eingemischt hat.
EXTRA
Um ein ähnliches Problem selbst zu beheben, führen Sie zunächst Folgendes aus:
die folgende Informationen bereitstellen würde:
Dies würde Ihnen zeigen, dass die Werte gewaltsam gesetzt werden, bevor der Benutzer danach gefragt wird (wodurch die von Ihnen eingestellten Werte überschrieben werden
debconf-set-selections
).Dann würden Sie shebang in ändern
/var/lib/dpkg/info/tzdata.config
aus#!/bin/sh
zu#!/bin/sh -x
, und der Programmablauf folgen, wo Sie würden sehen , dass es funktioniert:Wenn
/var/lib/dpkg/info/tzdata.config
Sie sich das ansehen, werden Sie folgendes finden:Das erklärt, warum @fiction answer funktioniert. Wenn Sie sich das Skript genauer ansehen, werden Sie feststellen, dass @andrekeller answer auch in neueren Debian-Versionen funktioniert, wenn Sie '/ etc / localtime' entfernen.
Hoffentlich hilft Ihnen diese Hilfe beim Debuggen, wenn die nächste Version von Debian das Skript noch intelligenter macht und vorhandene Antworten ebenfalls ungültig werden. Weitere Informationen zum Debuggen von debconf finden Sie in debconf-devel (7).
quelle