apt-get install tzdata no interactivo


100

Cuando trato de

apt-get install -y tzdata

aparece la opción de línea de comando para elegir la zona horaria. Estoy tratando de usar esto en un script para realizar alguna configuración, ¿cómo puedo hacer que apt-get se ejecute sin la entrada del usuario?

Sé reconfigurar los tzdata que puedo hacer

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

Pero cuando lo instalo, necesito que se ejecute por completo, incluso si no establece la zona horaria correcta, siempre puedo volver a configurarlo.

Lo intenté

echo 5 | apt-get install -y tzdata

pero no funciona como se esperaba.

Respuestas:


170

Este es el script que usé

(Versión actualizada con aportes de @elquimista de los comentarios)

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata

Parece funcionar bien.

Como un trazador de líneas:

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata

44
Si estás bien con UTC, aquí hay una sola línea:DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
Elquimista

4
Esto es un gran dolor. No puedo instalar tzdata sin que me pida que establezca mi zona horaria predeterminada (¿mensaje de configuración durante la instalación del paquete? ¿De quién fue la idea?), Y no puedo establecer la zona horaria predeterminada sin instalar primero tzdata. Ya está predeterminado en UTC si pasa EOF. ¿Por qué no hacer eso y dejar que el usuario actualice más tarde si lo desea? O permítame configurar la variable de entorno TZ y hacer que tzdata busque eso.
theferrit32

2
Hacer el ln -fs /usr/share/zoneinfo/America/New_York /etc/localtimepaso anterior DEBIAN_FRONTEND=noninteractive apt-get install -y tzdataera la única forma en que podía hacer que esto se instalara sin un indicador.
fncomp

Lo mismo me ocurre a mí, la única forma en que esto funcionó fue colocando la instrucción ln primero. @PYA.
jpruiz114

75

Si alguien quiere lograrlo Dockerfile, use como se muestra a continuación.

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata

2
Esto se puede hacer como una sola línea: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ...la DEBIAN_FRONTENDvariable debe establecerse para la installpieza. No funciona si se establece antes &&de la updatepieza.
Daniel Stevens

6

Todo el crédito por esto debe ir a @PYA, pero el orden correcto debe ser:

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
export DEBIAN_FRONTEND=noninteractive
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata

Edité la respuesta original para reflejar el cambio de orden.
sebisnow

5

Recientemente encontré la siguiente solución en un Dockerfile que construye la biblioteca Cingulata FHE:

ln -snf /usr/share/zoneinfo/$(curl https://ipapi.co/timezone) /etc/localtime

Básicamente, utiliza la API proporcionada por ipapi.co para recuperar la información de la zona horaria. Esto configura automáticamente la zona horaria correctamente en lugar de omitir el cuadro de diálogo y usar el predeterminado (UTC).


1

Así es como lo hice:

echo 1 > input.txt
echo 1 >> input.txt
apt-get install -y tzdata < input.txt
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
echo America/Los_Angeles > /etc/timezone

Las dos primeras declaraciones de eco crean un archivo de texto que contiene los números de selección para el menú de área geográfica y el menú de ciudad / región. Este archivo luego se usa para proporcionar entrada al comando apt-get install. El paquete tzdata se instalará sin solicitar ninguna entrada del usuario. La zona horaria se establecerá en África / Abidjan como si ingresara 1 y 1 en respuesta a las indicaciones que normalmente recibiría. Luego cambio la zona horaria a la que quiero con los dos últimos comandos.

En lugar de 1 y 1, podría usar los números reales para el área geográfica y la ciudad / región que desee, pero me parece que esos números podrían cambiar.

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.