Définition du fuseau horaire avec un script automatisé

20

J'écris des scripts pour automatiser la configuration de nouvelles installations de slicehost. Dans un monde parfait, après avoir commencé le script, il fonctionnerait sans aucune attention de ma part. J'ai réussi, à une exception près.

Comment puis-je définir le fuseau horaire, de manière permanente (survivre au redémarrage) et sain (ajuster pour l'heure standard et l'heure d'été, donc ne pas forcer la date) ... d'une manière qui ne nécessite pas d'entrée de ma part?

Actuellement, j'utilise

 dpkg-reconfigure tzdata

Cela ne semble avoir aucun moyen d'y forcer des paramètres. Cela nécessite une intervention de l'utilisateur.


EDIT: J'édite ici, plutôt que de commenter, car les commentaires ne semblent pas autoriser les blocs de code.

Voici le code réel avec lequel je me suis retrouvé, basé sur le commentaire de Rudedog ci-dessous. J'ai également remarqué que cela ne met pas à jour / etc / timezone. Je ne sais pas qui l'utilise, mais au cas où quelqu'un le ferait, je le fais aussi.

TIMEZONE="America/Los_Angeles"      
echo $TIMEZONE > /etc/timezone                     
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime   # This sets the time
À M
la source

Réponses:

18

Vous devriez pouvoir le faire avec

cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Remplacez le fuseau horaire approprié dans la commande ci-dessus.

Rudedog
la source
1
vous devriez faire un lien symbolique qui ne copie pas
Zypher
1
Il utilise Debian. dpkg-reconfigure tzdatafait une copie, pas un lien symbolique. Je crois que la raison est que / usr / share peut ne pas être monté au démarrage.
Rudedog
Selon la section technique de la page de manuel tzconfig pour Debian:> Le travail effectué par tzconfig est en fait assez simple. Il met simplement à jour le lien / etc / localtime pour pointer vers le fuseau horaire correct installé dans / usr / share / zoneinfo /.
brent
1
tzconfig est déconseillé sur lenny en faveur de dpkg-reconfigure tzdata et ne fera rien. Vous pouvez vérifier qu'il copie au lieu des liens symboliques en exécutant dpkg-reconfigure tzdata et regardez le résultat.
Rudedog
3

Sur Ubuntu 12.04, ce qui suit a fait l'affaire pour moi:

# http://manpages.ubuntu.com/manpages/precise/man7/debconf.7.html
export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive
echo "Europe/Berlin" > /etc/timezone
dpkg-reconfigure tzdata
Schlomo
la source
1
Cette méthode ne semble plus fonctionner bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
Fonctionne sur Ubuntu 14.04.
SuB
3

Essaye ça:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Amadu Bah
la source
Bien que le code soit apprécié, il doit toujours être accompagné d'une explication. Cela ne doit pas être long, mais c'est prévu.
peterh
3
Cette méthode ne semble plus fonctionner bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson
2

Mettre /etc/localtimeà jour le lien symbolique pour indiquer le fuseau horaire correct dans/usr/share/zoneinfo/

brent
la source
Notez que si vous utilisez un lien symbolique et que votre /usrest monté sur une partition distincte, tout ce qui commence avant d' /usrêtre monté n'aura pas le fuseau horaire correct. La plupart des distributions d'aujourd'hui, y compris Debian, copient plutôt que les liens symboliques.
Rudedog
1

Je me suis lancé moi-même. Voici une configuration complète pour savoir comment faire cela correctement (c'est un agrégat de commentaires ici et cette question ):

#Set time zone and time
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select London" | debconf-set-selections
TIMEZONE="Europe/London"
echo $TIMEZONE > /etc/timezone
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
/usr/sbin/ntpdate pool.ntp.org
Synchro
la source
0

tzdatautilise debconf pour répondre à cette question, vous devez donc le préremplir. Il existe plusieurs façons de procéder, la plus simple est de préconfigurer la réponse lors de l'installation . Au-delà de cela, vous pouvez configurer une base de données par défaut à utiliser par debconf, consultez la debconf(7)page de manuel pour savoir comment procéder.

TRS-80
la source
-2

Assurez-vous également que ntpd est installé et fonctionne.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Iraklis
la source