automatiser dpkg-reconfigure tzdata


60

J'utilise puppet pour administrer un cluster de serveurs Debian. Je dois changer le fuseau horaire de chaque machine du cluster. La bonne façon de faire cela consiste à utiliser debian dpkg-reconfigure tzdata. Mais je ne peux apparemment sembler le changer que si j'utilise le dialogue. Existe-t-il un moyen d'automatiser cette opération à partir du shell afin que je puisse simplement écrire un fichier Exec pour simplifier les choses?

Sinon, je pense que la meilleure façon serait probablement d'avoir marionnettes distribuer /etc/timezoneet /etc/localtimeavec les données correctes dans le cluster.

Toute entrée appréciée!


Notez que la réponse actuellement acceptée est erronée depuis 2017 . La bonne réponse est celle-ci .
Dan Dascalescu

Réponses:


93

Vous devez spécifier le frontal comme «non interactif» et cela sauvegardera vos paramètres actuels.

dpkg-reconfigure considérera les paramètres actuels du système comme un évangile. Changez donc simplement votre fuseau horaire comme vous le feriez normalement et exécutez-le avec l'indicateur non interactif.

par exemple pour que je passe à "Europe / Dublin" où je suis:

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

Évidemment, cela vous permet d’utiliser puppet / cfengine comme vous le souhaitez pour distribuer également / etc / timezone.


5
au lieu de modifier les autorisations, vous pouvez procéder de la sorte. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null
gorelative

3
Pour être complet, un autre moyen de faire écho via sudo estsudo bash -c 'echo "Europe/Dublin" > /etc/timezone'
MartyMacGyver

6
La tête haute! Les versions les plus récentes d'Ubuntu / Debian ne fonctionnent plus de cette façon. Le comportement a changé. bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
gertvdijk

22

Puisque la réponse acceptée ne fonctionne plus (Debian Jessie, avril 2017), une approche modifiée depuis le lien de commentaire de @ gertvdijk semble faire l'affaire maintenant:

sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata

1
Cela devrait être la réponse acceptée de nos jours.
Dan Dascalescu

Génial, cela fonctionne bien
infomaniac

5

Vous devriez pouvoir utiliser debconf-set-selections pour prédéfinir la configuration. Installez debconf-utils et exécutez-le debconf-get-selections | grep tzdatasur un système correctement configuré pour déterminer les paramètres à définir.


1
Pour les choses basées sur debconf, cela devrait marcher. Mais tzdata préfère la configuration de / etc / timezone. Donc, cela ne fonctionne pas sur un système déjà installé (Wheezy).
Elrond

3

Vous pouvez également utiliser la recette du wiki ( archive ) de Puppet (maintenant disparu ) qui remplace /etc/localtimele fichier zoneinfo approprié à partir de /usr/share/zoneinfo: -

class timezone {
    package { "tzdata":
        ensure => installed
    }
}

class timezone::central inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Central",
    }
}

class timezone::eastern inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Eastern"
    }
}

class timezone::pacific inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Pacific"
    }
}

class timezone::mountain inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source =>
             "file:///usr/share/zoneinfo/US/Mountain"
    }
}

Je ne suis pas sûr que dpkg-reconfigure fasse quelque chose de plus, mais j'ai utilisé la recette ci-dessus et cela fonctionne parfaitement.


-3

C'est très simple et il suffit de taper une commande et de répondre aux questions simples.
puis lancez:

/usr/bin/tzselect

1
man tzselect: "Notez que tzselect ne changera pas le fuseau horaire pour vous. Utilisez 'dpkg-reconfigure tzdata' pour y parvenir."
Spinkus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.