Frage Automatisieren Sie dpkg-reconfigure tzdata


Ich verwende Marionette, um einen Cluster von Debian-Servern zu verwalten. Ich muss die Zeitzone jeder Maschine im Cluster ändern. Der richtige Debian-Weg, dies zu tun, ist zu verwenden dpkg-reconfigure tzdata. Aber ich kann es nur ändern, wenn ich den Dialog benutze. Gibt es eine Möglichkeit, dies von der Shell aus zu automatisieren, so dass ich einfach einen Exec schreiben kann, um das zu vereinfachen?

Wenn nicht, denke ich, der nächstbeste Weg wäre wahrscheinlich, die Puppe zu verteilen /etc/timezone und /etc/localtime mit den richtigen Daten über den Cluster.

Jeder Eingang geschätzt!


51
2017-11-13 18:45


Ursprung




Antworten:


Sie müssen das Frontend als 'nicht interaktiv' festlegen und es werden Ihre aktuellen Einstellungen gespeichert.

dpkg-reconfigure verwendet die aktuellen Systemeinstellungen als Gospel, also ändern Sie einfach Ihre Zeitzone so, wie Sie es normalerweise tun würden, und führen Sie sie mit der nicht interaktiven Flagge aus

z.B. für mich nach "Europa / Dublin" zu wechseln, wo ich bin:

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

Natürlich können Sie so auch puppet / cfengine verwenden, um / etc / timezone zu verteilen.


91
2017-11-13 18:57



Als Alternative zum Ändern von Berechtigungen könnten Sie so etwas tun. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null - gorelative
Der Vollständigkeit halber ist eine andere Möglichkeit, über Sudo zu echo sudo bash -c 'echo "Europe/Dublin" > /etc/timezone' - MartyMacGyver
Kopf hoch! Neuere Ubuntu / Debian-Versionen funktionieren nicht mehr so. Verhalten geändert bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806 - gertvdijk


Seit der akzeptierte Antwort funktioniert nicht mehr (Debian Jessie, April 2017), ein von @ gertvdijk modifizierter Ansatz Kommentar Link scheint jetzt den Job zu machen:

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

7
2018-04-27 20:30





Sie sollten in der Lage sein zu verwenden debconf-set-selections um die Konfiguration voreinzustellen. Installiere debconf-utils und starte es debconf-get-selections | grep tzdata auf einem richtig konfigurierten System, um herauszufinden, was es auch einzustellen.


4
2017-11-13 18:57



Für Dinge, die auf Debconf basieren, sollte dies funktionieren. Aber tzdata bevorzugt die Konfiguration aus / etc / timezone. Dies funktioniert auf einem bereits installierten (Wheezy) System nicht. - Elrond


Sie können auch das Rezept von der (jetzt nicht mehr existierenden) verwenden Puppen-Wiki (Archiv) das ersetzt /etc/localtime mit der entsprechenden zoneinfo-Datei von /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"
    }
}

Ich bin mir nicht sicher, ob dpkg-reconfigure etwas extra tut, aber ich habe das obige Rezept verwendet und es funktioniert perfekt.


2
2018-05-26 20:23





Es ist sehr einfach und muss nur einen Befehl eingeben und die einfachen Fragen beantworten.
dann renne:

/usr/bin/tzselect

-3
2018-04-07 16:53



man tzselect: "Beachten Sie, dass tzselect die Zeitzone für Sie nicht ändert. Verwenden Sie 'dpkg-reconfigure tzdata', um dies zu erreichen." - spinkus