Pour configurer le fuseau horaire, je crée d'abord '/ etc / localtime' en tant que lien logiciel vers le fichier zoneinfo approprié sous le répertoire '/ usr / share / zoneinfo'. Ensuite, j'exécute la commande dpkg-reconfigure , et tout sera mis en place. Ainsi, par exemple, pour créer le fuseau horaire «Europe / Bruxelles»:
AREA='Europe'
ZONE='Brussels'
ZONEINFO_FILE='/usr/share/zoneinfo/'"${AREA}"'/'"${ZONE}"
ln --force --symbolic "${ZONEINFO_FILE}" '/etc/localtime'
dpkg-reconfigure --frontend=noninteractive tzdata
(Notez que l'AREA est un sous-répertoire sous '/ usr / share / info', et la ZONE est un fichier sous le sous-répertoire AREA).
Pour configurer les paramètres régionaux, je lance d'abord un script sed qui créera une nouvelle copie du fichier '/etc/locale.gen', basée sur le contenu du fichier '/ usr / share / i18n / SUPPORTED'. Chaque ligne du fichier d'entrée sera copiée, mais elle sera transformée en commentaire, sauf s'il s'agit d'une entrée de paramètres régionaux UTF-8 pour une langue que je souhaite rendre disponible sur mon système (par exemple, anglais, néerlandais, français, et allemand):
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
Ensuite, j'ai défini les paramètres régionaux de l'environnement par défaut dans la base de données debconf, par exemple, en anglais britannique :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Je supprime ensuite le fichier '/ etc / default / locale' existant (juste pour m'assurer que son ancien contenu n'interfère pas avec mes nouveaux paramètres), et exécute la commande dpkg-reconfigure pour générer tous les paramètres régionaux sélectionnés par le script sed , et pour créer un nouveau fichier '/ etc / default / locale' avec juste une entrée pour définir la variable 'LANG' sur mes paramètres régionaux d'environnement par défaut sélectionnés:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Ensuite, en fonction de mes besoins, je souhaiterai peut-être exécuter quelques commandes de mise à jour des paramètres régionaux , pour remplacer, par exemple, les variables qui affectent la mise en forme des valeurs et les définir sur des paramètres régionaux différents (comme l'anglais irlandais ):
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'
(J'aurais pu spécifier tous ces paramètres sur une seule invocation de la commande update-locale , mais apparemment, l'ordre dans lequel les entrées sont écrites dans le fichier '/ etc / default / locale' est imprévisible si je le fais. Je je préfère qu'ils soient toujours dans le même ordre, c'est pourquoi je les génère un par un.)
Et enfin, je voudrais peut-être exécuter la commande update-locale une dernière fois, pour configurer la variable LANGUAGE (c'est-à-dire la liste des langues dans lesquelles je veux que les messages texte traduisibles soient affichés):
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"))
...