Jak trwale zresetować strefę czasową w Debianie?


Odpowiedzi:


73

Narzędzie, które okazało się łatwiejsze w użyciu, to dpkg-reconfigure. Posługiwać się:

sudo dpkg-reconfigure tzdata

Otrzymasz wiele możliwości wyboru, w tym niektóre, które nie zostały uwzględnione tzselect.


Zaletą robienia tego w ten sposób jest to, że robisz to w sposób możliwy do odtworzenia i ograniczasz szanse na zrobienie czegoś złego, na przykład wprowadzenie strefy czasowej, która nie istnieje.
Mogget

1
To dobra rzecz, ale jeśli potrzebujesz nieinteraktywnej (i dlatego skryptowalnej) opcji, zobacz moją odpowiedź poniżej.
mc0e,

14

Jest to przypuszczalnie nieco późno w przypadku PO, a bardziej przeznaczone dla innych poszukiwaczy, którzy tu przybywają.

Jeśli potrzebujesz rozwiązania nieinteraktywnego, wypróbuj to rozwiązanie, zmieniając strefę czasową za pomocą dpkg-reconfigure tzdata i debconf-set-selections

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

Możesz dowiedzieć się o swojej strefie czasowej, szukając w / usr / share / zoneinfo. W rzeczywistości powyższe polecenie dpkg-reconfigure kopiuje odpowiedni plik z tego miejsca do / etc / localtime. Zwykle robiłem to ręcznie i wydaje się, że działa dobrze.

Nie zdziw się, jeśli długo działające procesy nie zauważą zmiany. np. przychodzą mi na myśl znaczniki czasu dziennika Apache. Zastanów się, czy to ma znaczenie, a zatem czy musisz ponownie uruchomić uruchomione procesy, a nawet uruchomić ponownie.


3
Uwaga: aby to zadziałało, jest to wymaganie, które jeszcze /etc/localtimenie istnieje. Jeśli istnieje i jest softlink do /usr/share/zoneinfo/whatever, jest traktowany jako baza i /etc/localtimejest odpowiednio aktualizowany, zastępując zmiany.
Multisync,

11

Aby edytować go interaktywnie w najnowszych wersjach Debiana i Ubuntu (Stretch / Xenial itp.), Musisz również usunąć /etc/localtime, w przeciwnym razie /etc/timezonezostanie zastąpiony.

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

Ta odpowiedź jest oparta na odpowiedzi mc0e. Nie mogę dodać komentarza do mojej reputacji.


3

TL; DR

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

gdzie Etc/UTCjest twoja preferowana strefa czasowa, którą znalazłeś tzselect.

Dłuższa wersja

Kiedy używasz

dpkg-reconfigure tzdata

informacje o strefie czasowej nie są przechowywane po ponownym uruchomieniu. Możesz zweryfikować swoje ustawienia za pomocą

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

Jeśli tylko aktualizujesz /etc/timezone, aktualizacja nie będzie zgodna /etc/localtime, dlatego lepiej wykonać

tzconfig

Użyj, tzselectaby dowiedzieć się, które strefy czasowe faktycznie istnieją (lub po prostu przeglądaj /usr/share/zoneinfokatalog).

W systemach POSIX TZpowinny mieć pierwszeństwo przed /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

Korzystanie bezpośrednio TZ pozwala zaoszczędzić wiele wywołań systemowych, ponieważ często używane funkcje związane z datą / czasem muszą uzyskiwać dostęp do systemu plików za każdym razem, gdy jakiś program prosi o podanie bieżącej daty. To mikrooptymalizacja, ale dość prosta.


Czy eksportowanie TZw pliku profilu powoduje utworzenie dowiązania symbolicznego? Z mojego doświadczenia wcale to nie brzmi prawdziwie. Być może miałeś na myśli „Upewnij się także, aby utworzyć dowiązanie symboliczne ...”?
rano

1
@amn Nie, to nie stworzy dowiązania symbolicznego, próbowałem to wyjaśnić. Ale $TZzmienna jest odczytywana przez glibcfunkcje: gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart

nie powinno być echo "TZ=Etc/UTC" >> /etc/environment? brakuje ci TZ=części ... (jeśli ktoś nadal używa starożytnych wersji Debiana). Ponadto, nieinteraktywne rzeczy, takie jak demony, nadal używałyby /etc/localtimewersji zamiast jednego zestawu w TZ...
Matija Nalis,

@MatijaNalis Tak, masz rację. Dzięki za korektę!
Tombart
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.