Définir automatiquement le timezone Linux en fonction de l'location

Comment pouvons-nous définir automatiquement le timezone par défaut du système sous Linux en utilisant Internet? Comme je le vois, les servers NTP peuvent mettre à jour uniquement le time, mais pas le timezone. Y at-il un server qui peut changer le timezone?

J'ai écrit un programme il y a quelque time qui fait ceci: tzupdate .

Vous pouvez voir à quoi il définirait votre timezone (sans le configurer réellement) en exécutant tzupdate -p :

 $ tzupdate -p Europe/Malta 

Vous pouvez le définir pour de vrai en exécutant tzupdate tant que root.

 $ sudo tzupdate Europe/Malta $ date Thu 12 Sep 05:52:22 CEST 2013 

Cela fonctionne par:

  • Géolocaliser votre IP actuelle
  • Obtenir le timezone pour cet endroit
  • Mise à jour du lien symbolique à /etc/localtime pour pointer vers le file zoneinfo pour ce timezone

Ce n'est pas clair ce que vous entendez par «mise à jour du timezone».

Unix et Linux gardent le time comme le nombre de secondes depuis le 1er janvier 1970, 00:00 UTC. L'horloge système Unix est donc indépendante du timezone. Les fuseaux horaires n'existent pas dans le kernel Linux; c'est seulement lorsqu'une application d'espace user affiche l'heure à laquelle le nombre de secondes depuis 1970 est interprété en utilisant un timezone. Habituellement, cette interprétation se fait par les fonctions de la bibliothèque C. Le timezone est sélectionné par la variable d'environnement TZ . Les définitions de timezone (qui sont composées d'un nom de timezone, d'un décalage par rapport à l'heure UTC, de l'heure d'été et des décalages pendant l'heure d'été) font partie de GNU libc et sont généralement incluses dans les dissortingbutions Linux sous forme de packageage "tzdata". Par conséquent, la mise à jour des définitions de timezone consiste à exécuter apt-get upgrade , yum update ou une opération similaire.

Notez que certains logiciels, tels que Java, possèdent leurs propres files de définition de timezone, qui doivent être mis à jour séparément.

Le NTP assure le suivi du nombre de secondes depuis le 1er janvier 1900, UTC . Par conséquent, NTP, comme le kernel Unix, n'a pas de notion de timezone.