automatizar dpkg-reconfigure tzdata


60

Estoy usando Puppet para administrar un grupo de servidores Debian. Necesito cambiar la zona horaria de cada máquina en el clúster. La forma debian adecuada de hacer esto es usar dpkg-reconfigure tzdata. Pero solo puedo cambiarlo si uso el cuadro de diálogo. ¿Hay alguna forma de automatizar esto desde el shell para que pueda escribir un Exec para facilitar esto?

Si no, creo que la siguiente mejor forma sería tener una distribución de títeres /etc/timezoney /etc/localtimecon los datos correctos en todo el clúster.

Cualquier entrada apreciada!


Tenga en cuenta que la respuesta actualmente aceptada ha sido incorrecta desde 2017 . La respuesta correcta es esta .
Dan Dascalescu

Respuestas:


92

Debe especificar la interfaz como "no interactiva" y guardará su configuración actual.

dpkg-reconfigure tomará la configuración actual del sistema como gospel, así que simplemente cambie su zona horaria como lo haría normalmente y ejecútela con el indicador no interactivo

por ejemplo, para que yo cambie a "Europa / Dublín" donde estoy:

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

Obviamente, esto le permite usar puppet / cfengine como quiera distribuir / etc / timezone también.


55
Como alternativa a cambiar los permisos, puede hacer algo como esto. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null
Gorelativo

3
Para completar, otra forma de hacer eco a través de sudo essudo bash -c 'echo "Europe/Dublin" > /etc/timezone'
MartyMacGyver

66
¡Aviso! Las versiones más recientes de Ubuntu / Debian ya no funcionan de esta manera. El comportamiento cambió. bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
gertvdijk

21

Dado que la respuesta aceptada ya no funciona (Debian Jessie, abril de 2017), un enfoque modificado desde el enlace de comentarios de @ gertvdijk parece hacer el trabajo ahora:

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

1
Esta debería ser la respuesta aceptada hoy en día.
Dan Dascalescu

Genial, esto funciona de
maravilla

5

Debería poder usar debconf-set-selections para preestablecer la configuración. Instale debconf-utils y ejecútelo debconf-get-selections | grep tzdataen un sistema configurado correctamente para averiguar qué configurarlo también.


1
Para cosas que están basadas en debconf, esto debería funcionar. Pero tzdata prefiere la configuración de / etc / timezone. Por lo tanto, esto no funciona en un sistema ya instalado (wheezy).
Elrond

3

También puede usar la receta del (ahora extinto) Puppet wiki ( archivo ) que reemplaza /etc/localtimecon el archivo zoneinfo apropiado 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"
    }
}

No estoy seguro de si dpkg-reconfigure hace algo extra, pero he usado la receta anterior y funciona perfectamente.


-3

Es muy simple y solo necesita escribir un comando y responder las preguntas simples.
entonces corre:

/usr/bin/tzselect

1
man tzselect: "Tenga en cuenta que tzselect en realidad no cambiará la zona horaria por usted. Utilice 'dpkg-reconfigure tzdata' para lograr esto".
spinkus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.