Linux, Shakespeare et Molière
Objectif : afficher les messages système en anglais.
La lingua franca du monde du libre
Actuellement, de nombreuses distributions Linux courantes et moins courantes sont à peu près intégralement traduites en français. Autrement dit, vous choisissez votre langue au moment de lancer l'installation et, à partir de là, la procédure s'effectue entièrement en français, comme nous avons pu le voir lors de l'installation d'Oracle Linux.
Si le simple utilisateur d'un poste de travail sous Linux peut légitimement s'attendre à ce que son environnement graphique s'affiche entièrement dans sa propre langue, cela n'est pas tout à fait vrai pour l'administrateur du système, pour plusieurs raisons.
-
Les manuels en ligne ne sont que partiellement disponibles dans d'autres langues que l'anglais. Leur traduction dans toutes les langues est une entreprise d'une envergure pharaonique.
-
La lingua franca d'un grand nombre de projets du monde du libre (comme Oracle Linux) reste l'anglais. Il existe certes des projets localisés pour chaque pays, mais très souvent, le gros de la communication passe par les forums, les listes de diffusion et les canaux IRC anglophones. Dans le cas d'Oracle Linux, le forum Applications and Infrastructure Community constitue le principal canal de communication du projet. Même s'il est théoriquement possible de survivre en tant qu'administrateur Linux sans parler un seul mot d'anglais, attendez-vous à quelques complications. Autant vouloir entamer une carrière au Vatican sans comprendre un mot de latin.
-
Sur un système configuré en français, certains messages système comme les audits SELinux s'affichent dans un mélange de français et d'anglais assez folklorique, et il vaut mieux privilégier l'anglais.
Basculer vers l'anglais
Dans la configuration par défaut, notre système Oracle Linux est en français,
étant donné que nous avons sélectionné Français/France
lors de la définition
des paramètres régionaux.
Connectez-vous en tant qu'utilisateur simple :
linuxbox login : microlinux
Password : ********
Vous vous retrouvez face à l'invite de commande :
[microlinux@linuxbox ~]$ _
La commande localectl status
permet d'afficher les paramètres régionaux du
système :
[microlinux@linuxbox ~]$ localectl status
System Locale: LANG=fr_FR.UTF-8
VC Keymap: ch-fr
X11 Layout: ch
X11 Variant: fr
La directive list-locales
affiche la liste des localisations disponibles sur
notre système :
[microlinux@linuxbox ~]$ localectl list-locales
C.utf8
aa_DJ
aa_DJ.iso88591
aa_DJ.utf8
aa_ER
aa_ER.utf8
aa_ER.utf8@saaho
aa_ER@saaho
aa_ET
aa_ET.utf8
...
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
...
fr_FR
fr_FR.iso88591
fr_FR.iso885915@euro
fr_FR.utf8
...
-
Utilisez la touche Space pour avancer d'une page.
-
La touche Q permet de quitter la liste des localisations.
Pour basculer le système vers l'anglais, nous allons utiliser la directive
set-locale
comme ceci :
$ sudo localectl set-locale LANG=en_US.utf8
À partir de là, les messages du système s'affichent en anglais.
[microlinux@linuxbox ~]$ make love
make: *** No rule to make target `love'. Stop.
SSH et les variables d'environnement
Si vous vous connectez à distance, vous pouvez vous retrouver confronté à un comportement pour le moins surprenant :
[kikinovak@alphamule:~] $ ssh microlinux@linuxbox
microlinux@linuxbox's password:
Last login: Sat May 15 14:08:29 2021 from alphamule.microlinux.lan
[microlinux@linuxbox ~]$ localectl status
System Locale: LANG=en_US.utf8
VC Keymap: ch-fr
X11 Layout: ch
X11 Variant: fr
[microlinux@linuxbox ~]$ echo $LANG
fr_FR.UTF-8
L'inconsistance manifeste des paramètres régionaux s'explique ici par le fait
que la variable LANG
est transmise depuis le client SSH, en l'occurrence ma
station de travail OpenSUSE Leap qui utilise le français (fr_FR.UTF-8
) par
défaut.
Pour éviter ce genre de situation, j'ai le choix entre trois solutions :
-
Redéfinir la variable
LANG
avant la connexion. -
Empêcher le client SSH d'envoyer les variables d'environnement.
-
Empêcher le serveur de recevoir les variables en question.
Redéfinir explicitement la variable LANG
Pour redéfinir ma variable LANG
avant de me connecter à distance, il suffit
que j'invoque la commande ssh
comme ceci :
$ LANG=en_US.utf8 && ssh microlinux@linuxbox
C'est la solution la plus simple, qui n'exige aucune compétence particulière. Les deux solutions ci-après s'adressent aux administrateurs Linux qui ont déjà un peu d'expérience.
Empêcher le client SSH d'envoyer les variables
Sur ma station de travail OpenSUSE Leap, le client SSH se configure par le
biais du fichier /etc/ssh/ssh_config
. J'ouvre ce fichier et je repère les
directives SendEnv
:
SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
SendEnv LC_IDENTIFICATION LC_ALL
Dans un premier temps, je commente toutes ces directives, c'est-à-dire je les
fais précéder d'un signe dièse #
pour les rendre inopérantes :
# SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
# SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
# SendEnv LC_IDENTIFICATION LC_ALL
Je prends en compte les modifications :
$ sudo systemctl reload sshd
À partir de là les variables d'environnement ne sont plus transmises.
Empêcher le serveur de recevoir les variables
Sur le serveur Oracle Linux, le service SSH se configure par le biais du
fichier /etc/ssh/sshd_config
. Ouvrez ce fichier et repérez les directives
AcceptEnv
.
# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Là encore, je commente toutes les directives, c'est-à-dire je les fais précéder
d'un signe dièse #
pour les rendre inopérantes :
# Accept locale-related environment variables
# AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
# AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
# AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
# AcceptEnv XMODIFIERS
Je prends en compte les modifications :
$ sudo systemctl reload sshd
Et le tour est joué.
La rédaction de ces cours demande du temps et des quantités significatives de café espresso. Vous appréciez cette formation ? Offrez un café au formateur en cliquant sur la tasse.