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!


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.


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

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.


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.


-3

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

/usr/bin/tzselect

1
man tzselect: "Beachten Sie, dass tzselect die Zeitzone für Sie nicht ändert. Verwenden Sie 'dpkg-reconfigure tzdata', um dies zu erreichen."
Spinkus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.