Wie setze ich die Zeitzone in Debian dauerhaft zurück?

25

Dreamhost scheint zu glauben, dass wir PDT mögen, obwohl wir im Mittleren Westen sind. Wie ändere ich die Zeitzone?

elynnaie
quelle

Antworten:

60

Ein Werkzeug, das ich als einfacher empfand, ist dpkg-reconfigure. Benutzen:

sudo dpkg-reconfigure tzdata

Sie erhalten eine Vielzahl von Optionen, einschließlich einiger, die nicht in enthalten sind tzselect.

Ynhockey
quelle
Ein Vorteil dieser Vorgehensweise besteht darin, dass Sie sie reproduzierbar ausführen und die Wahrscheinlichkeit von Fehlern wie der Eingabe einer nicht vorhandenen Zeitzone begrenzen.
Mogget
1
Dies ist eine gute Sache, aber wenn Sie eine nicht interaktive (und daher skriptfähige) Option benötigen, lesen Sie meine Antwort weiter unten.
mc0e
11

Dies ist vermutlich etwas spät für das OP und eher für andere Suchende gedacht, die hier ankommen.

Wenn Sie eine nicht interaktive Lösung benötigen, probieren Sie diese Lösung aus Ändern der Zeitzone mit dpkg-reconfigure tzdata und debconf-set-selections

echo "Europe/Zurich" > /etc/timezone 
dpkg-reconfigure -f noninteractive tzdata

Sie können Ihre Zeitzone ermitteln, indem Sie in / usr / share / zoneinfo stöbern. Tatsächlich kopiert der obige Befehl dpkg-reconfigure die entsprechende Datei von dort nach / etc / localtime. Früher habe ich das nur manuell gemacht, und es scheint gut zu funktionieren.

Seien Sie nicht zu überrascht, wenn lang laufende Prozesse die Änderung nicht übernehmen. zB Apache Log Timestamps kommen in den Sinn. Überlegen Sie, ob dies wichtig ist und ob Sie laufende Prozesse neu starten oder sogar neu starten müssen.

mc0e
quelle
2
Beachten Sie, dass dies eine Voraussetzung ist /etc/localtime existiert noch nicht. Wenn es existiert und ein Softlink zu ist /usr/share/zoneinfo/whateverEs ist als Basis genommen und es ist /etc/localtime Das wird entsprechend aktualisiert und überschreibt Ihre Änderungen.
Multisync
7

Aktualisieren:

Die kanonische Antwort (für die Ynhockey verdient Kredit) scheint zu sein:

dpkg-reconfigure tzdata

Meine ursprüngliche Antwort ist unten. Ich hätte diese Antwort einfach komplett gelöscht, aber superuser.com lässt nicht zu, dass akzeptierte Antworten gelöscht werden.

http://www.debian-administration.org/articles/213 sagt

Die einfache Möglichkeit, Ihre Zeitzone zu bearbeiten, ist die /usr/bin/tzselect Befehl.

...

Sobald Sie Ihre Zeitzone eingestellt haben, möchten Sie möglicherweise die UTC-Einstellung ändern. Auf Debian-Maschinen finden Sie diese in der Datei /etc/default/rcS. Obwohl dies geändert werden muss, ist ein Neustart erforderlich.

RedGrittyBrick
quelle
Das stimmt nicht. Durch Ändern der UTC-Einstellung in / etc / default / rcS wird die Zeitzone der Hardware-Uhr geändert. Dies ist eine völlig andere Sache, und für die meisten Linux-Benutzer sollte UTC beibehalten werden. (Sie benötigen nur die Ortszeit, wenn Sie mit Windows dual booten.) @Ynhockey hat die richtige Antwort.
Ariel
@Ariel: Danke. Antwort aktualisiert, da sie nicht gelöscht werden kann.
RedGrittyBrick
6

Um es in neueren Debian- und Ubuntu-Versionen (Stretch / Xenial usw.) nicht interaktiv zu bearbeiten, müssen Sie es entfernen /etc/localtime auch sonst /etc/timezone wird überschrieben.

echo 'Europe/Zurich' > /etc/timezone 
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

Diese Antwort basiert auf der Antwort von mc0e. Ich kann mit meinem Ruf keinen Kommentar abgeben.

Vojta Myslivec
quelle
2

TL; DR

echo "TZ=Etc/UTC" >> /etc/environment
tzconfig

woher Etc/UTC ist Ihre bevorzugte Zeitzone, die Sie verwendet haben tzselect.

Längere Version

Wenn Sie verwenden

dpkg-reconfigure tzdata

Die Zeitzoneninformationen werden nach dem Neustart nicht beibehalten. Sie können Ihre Einstellungen mit bestätigen

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`

Wenn Sie nur aktualisieren /etc/timezoneist das Update nicht konsistent mit /etc/localtimealso es ist besser auszuführen

tzconfig

Benutzen tzselect um herauszufinden, welche Zeitzonen tatsächlich existieren (oder einfach nur zu durchsuchen) /usr/share/zoneinfo Verzeichnis).

In POSIX-Systemen wird die TZ sollte vorher Vorrang haben /etc/localtime:

export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018

Direkt verwenden TZ kann Ihnen viele Systemaufrufe ersparen Da häufig verwendete datums- und zeitbezogene Funktionen immer dann auf das Dateisystem zugreifen müssen, wenn ein Programm nach dem aktuellen Datum fragt. Es ist eine Mikrooptimierung, aber ganz einfach.

Tombart
quelle
Sind Sie positiv im Export TZ Erstellt in deiner Profildatei ein Symlink? Das klingt nach meiner Erfahrung überhaupt nicht wahr. Vielleicht meinten Sie "Stellen Sie auch sicher, dass Sie den Symlink erstellen ..."?
amn
1
@amn Nein, das erzeugt keinen Symlink. Ich habe versucht, das zu klären. Aber $TZ Variable wird von gelesen glibc Funktionen: gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart
sollte es nicht sein echo "TZ=Etc/UTC" >> /etc/environment ? du fehlst TZ= Teil ... (falls jemand noch alte Debian-Versionen ausführt). Auch nicht interaktives Material wie Daemons wird weiterhin verwendet /etc/localtime Version anstelle von einem Satz in TZ...
Matija Nalis
@MatijaNalis Ja, du hast recht. Danke für die Korrektur!
Tombart