¿Cómo restablezco permanentemente la zona horaria en Debian?

Respuestas:

73

Una herramienta que me pareció más fácil de usar es dpkg-reconfigure. Utilizar:

sudo dpkg-reconfigure tzdata

Se le dará una multitud de opciones, incluidas algunas que no están incluidas tzselect.

Ynhockey
fuente
Un beneficio de hacerlo de esta manera es que lo está haciendo de una manera reproducible y limita las posibilidades de hacer algo mal, como colocar una zona horaria que no existe.
Mogget
1
Esto es bueno, pero si necesita una opción no interactiva (y, por lo tanto, programable), vea mi respuesta a continuación.
mc0e
14

Presumiblemente, esto es un poco tarde para el OP, y más para otros buscadores que llegan aquí.

Si necesita una solución no interactiva, pruebe esta solución al cambiar la zona horaria con dpkg-reconfigure tzdata y debconf-set-selections

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

Puede averiguar su zona horaria hurgando en / usr / share / zoneinfo. De hecho, el comando dpkg-reconfigure de arriba copia el archivo apropiado desde allí a / etc / localtime. Solía ​​hacerlo manualmente, y parece funcionar bien.

No se sorprenda si los procesos de larga ejecución no captan el cambio. Por ejemplo, las marcas de tiempo de registro de Apache vienen a la mente Considere si eso es importante y, por lo tanto, si necesita reiniciar los procesos en ejecución o incluso reiniciar.

mc0e
fuente
3
Tenga en cuenta que para que esto funcione, es un requisito que /etc/localtimeaún no existe. Si existe y es un enlace suave a /usr/share/zoneinfo/whatever, se toma como base y se /etc/localtimeactualiza en consecuencia, sobrescribiendo sus cambios.
Multisync
11

Para editarlo de forma no interactiva en versiones recientes de Debian y Ubuntu (Stretch / Xenial, etc.), también debe eliminarlo /etc/localtime, de lo contrario /etc/timezonese sobrescribirá.

echo 'Europe/Zurich' > /etc/timezone 
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

Esta respuesta se basa en la respuesta mc0e '. No puedo agregar un comentario con mi reputación.

Vojta Myslivec
fuente
3

TL; DR

echo "TZ=Etc/UTC" >> /etc/environment
tzconfig

¿Dónde Etc/UTCestá su zona horaria preferida que encontró usando tzselect?

Versión más larga

Cuando estas usando

dpkg-reconfigure tzdata

la información de la zona horaria no se guarda después del reinicio. Puede verificar su configuración con

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`

Si solo está actualizando /etc/timezone, la actualización no será coherente /etc/localtime, por lo tanto , es mejor ejecutar

tzconfig

Utilícelo tzselectpara averiguar qué zonas horarias existen realmente (o simplemente explore el /usr/share/zoneinfodirectorio).

En los sistemas POSIX, TZdebe tener prioridad antes de /etc/localtime:

export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018

El uso directo TZ puede ahorrarle muchas llamadas al sistema, ya que las funciones relacionadas con la fecha / hora de uso frecuente tienen que acceder al sistema de archivos cada vez que un programa solicita la fecha actual. Es una microoptimización, pero bastante simple.

Tombart
fuente
¿Estás seguro de que exportar TZen tu archivo de perfil crea un enlace simbólico? Eso no suena cierto en absoluto en mi experiencia. ¿Quizás quiso decir "También asegúrese de crear el enlace simbólico ..."?
amn
1
@amn No, eso no creará un enlace simbólico, he intentado aclarar eso. Pero la $TZvariable se lee por glibcfunciones: gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart
no debería ser echo "TZ=Etc/UTC" >> /etc/environment? te falta TZ=parte ... (en caso de que alguien todavía esté ejecutando versiones antiguas de Debian). Además, las cosas no interactivas, como los demonios, seguirían usando la /etc/localtimeversión en lugar de un conjunto en TZ...
Matija Nalis
@MatijaNalis Sí, tienes razón. ¡Gracias por la corrección!
Tombart