automatisieren Sie dpkg-reconfigure tzdata

60

Ich verwende Puppet, um einen Cluster von Debian-Servern zu verwalten. Ich muss die Zeitzone jedes Computers im Cluster ändern. Der richtige Weg, dies zu tun, ist Debian zu benutzen dpkg-reconfigure tzdata. Aber ich kann es nur ändern, wenn ich den Dialog benutze. Gibt es eine Möglichkeit, dies über die Shell zu automatisieren, sodass ich einfach einen Exec schreiben kann, um dies zu vereinfachen?

Wenn nicht, ich glaube , die nächste beste Weg , wahrscheinlich zu haben Puppe verteilen würde /etc/timezoneund /etc/localtimein dem Cluster die korrekten Daten mit.

Jede Eingabe wird gebeten!

Elrond
quelle
Beachten Sie, dass die aktuell akzeptierte Antwort seit 2017 falsch ist . Die richtige Antwort ist diese .
Dan Dascalescu

Antworten:

92

Sie müssen das Frontend als "nicht interaktiv" festlegen, damit Ihre aktuellen Einstellungen gespeichert werden.

dpkg-reconfigure übernimmt die aktuellen Systemeinstellungen als Evangelium. Ändern Sie also einfach Ihre Zeitzone wie gewohnt und führen Sie sie mit dem nicht interaktiven Flag aus

zB für mich zu "Europa / Dublin" zu wechseln, wo ich bin:

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

Offensichtlich können Sie Puppet / Cfengine verwenden, wie Sie / etc / timezone auch verteilen möchten.

Philip Reynolds
quelle
5
Als Alternative zum Ändern von Berechtigungen können Sie Folgendes tun. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null
gorelative
3
Der Vollständigkeit sudo bash -c 'echo "Europe/Dublin" > /etc/timezone'
halber
6
Kopf hoch! Neuere Ubuntu / Debian-Versionen funktionieren nicht mehr so. Verhalten geändert. bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
gertvdijk
21

Da die akzeptierte Antwort nicht mehr funktioniert (Debian Jessie, April 2017), scheint ein von @ gertvdijks Kommentar- Link geänderter Ansatz die Aufgabe jetzt zu erledigen:

sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata
scruss
quelle
1
Dies sollte heutzutage die akzeptierte Antwort sein.
Dan Dascalescu
Großartig, das ist ein Vergnügen
Infomaniac
5

Sie sollten in der Lage sein, die Konfiguration mit debconf-set-selections voreinzustellen. Installieren Sie debconf-utils und führen Sie es debconf-get-selections | grep tzdataauf einem ordnungsgemäß konfigurierten System aus, um herauszufinden, was Sie ebenfalls einstellen müssen.

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

Sie können auch das Rezept aus dem (inzwischen nicht mehr existierenden) Puppet-Wiki ( Archiv ) verwenden, das /etc/localtimedie entsprechende zoneinfo-Datei ersetzt 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 macht, aber ich habe das obige Rezept verwendet und es funktioniert perfekt.

phred
quelle
-3

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

/usr/bin/tzselect
f4a65fa46s5fa
quelle
1
man tzselect: "Beachten Sie, dass tzselect die Zeitzone für Sie nicht ändert. Verwenden Sie 'dpkg-reconfigure tzdata', um dies zu erreichen."
Spinkus