Para configurar la zona horaria, primero creo '/ etc / localtime' como un enlace suave al archivo zoneinfo apropiado en el directorio '/ usr / share / zoneinfo'. Luego, ejecuto el comando dpkg-reconfigure , y todo se pondrá en su lugar. Entonces, por ejemplo, para configurar la zona horaria 'Europa / Bruselas':
AREA='Europe'
ZONE='Brussels'
ZONEINFO_FILE='/usr/share/zoneinfo/'"${AREA}"'/'"${ZONE}"
ln --force --symbolic "${ZONEINFO_FILE}" '/etc/localtime'
dpkg-reconfigure --frontend=noninteractive tzdata
(Tenga en cuenta que AREA es un subdirectorio bajo '/ usr / share / info', y ZONE es un archivo bajo el subdirectorio AREA).
Para configurar las configuraciones regionales, primero ejecuto un script sed que creará una nueva copia del archivo '/etc/locale.gen', basado en el contenido del archivo '/ usr / share / i18n / SUPPORTED'. Todas las líneas del archivo de entrada se copiarán, pero se convertirán en un comentario a menos que sea una entrada de una configuración regional UTF-8 para un idioma que deseo que esté disponible en mi sistema (por ejemplo, inglés, holandés, francés, y alemán):
sed --regexp-extended --expression='
1 {
i\
# This file lists locales that you wish to have built. You can find a list\
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add\
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change\
# this file, you need to rerun locale-gen.\
\
}
/^(en|nl|fr|de)(_[[:upper:]]+)?(\.UTF-8)?(@[^[:space:]]+)?[[:space:]]+UTF-8$/! s/^/# /
' /usr/share/i18n/SUPPORTED > /etc/locale.gen
A continuación, configuro el entorno local predeterminado en la base de datos de debconf, por ejemplo, en inglés británico :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Posteriormente elimino el archivo '/ etc / default / locale' existente (solo para asegurarme de que su contenido anterior no interferirá con mi nueva configuración), y ejecuto el comando dpkg-reconfigure para generar todas las configuraciones regionales que el script sed seleccionó , y para crear un nuevo archivo '/ etc / default / locale' con solo una entrada para establecer la variable 'LANG' en mi entorno local predeterminado seleccionado:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Luego, según mis requisitos, es posible que desee ejecutar algunos comandos de actualización de configuración regional , para anular, por ejemplo, las variables que afectan el formato de los valores y establecerlas en una configuración regional diferente (como el inglés irlandés ):
update-locale LC_NUMERIC='en_IE.UTF-8'
update-locale LC_TIME='en_IE.UTF-8'
update-locale LC_MONETARY='en_IE.UTF-8'
update-locale LC_PAPER='en_IE.UTF-8'
update-locale LC_NAME='en_IE.UTF-8'
update-locale LC_ADDRESS='en_IE.UTF-8'
update-locale LC_TELEPHONE='en_IE.UTF-8'
update-locale LC_MEASUREMENT='en_IE.UTF-8'
update-locale LC_IDENTIFICATION='en_IE.UTF-8'
(Podría haber especificado todos estos parámetros en una sola invocación del comando update-locale , pero aparentemente, el orden en que las entradas se escriben en el archivo '/ etc / default / locale' es impredecible si lo hago. prefiero que siempre estén en el mismo orden, por eso los genero uno por uno.)
Y finalmente, es posible que desee ejecutar el comando update-locale por última vez, para configurar la variable LANGUAGE (es decir, la lista de idiomas en los que quiero que se muestren los mensajes de texto traducibles):
update-locale LANGUAGE='en_GB:en_US:en'
File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module> sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))
...