Récemment, j'ai installé un serveur en Chine, derrière le Great Firewall of China (GFW) pour un des mes clients. Le code n'a pas de frontières mais la langue peut parfois poser problème - même pour un système d'exploitation, au niveau de la locale.

Linux : résoudre Cannot set LC_ALL to default locale

Les locales sont un ensemble de paramètres qui définissent la langue de l'utilisateur, sa région et les préférences régionales que l'utilisateur souhaire voir dans son interface. Typiquement, une locale est identifiée par un code langue suivi d'un identifiant de région. Nous avons par exemple "en_US.UTF-8" pour l'anglais américain (en pour l'anglais, US pour les USA) ou "fr_FR.UTF-8" pour le français de France.

Dans le cas de mon serveur chinois, qui tourne sous Debian, les paramètres de la locale n'étaient pas uniformément remplis avec le même code langue et certains paramètres étaient manquants.

On obtenait donc ces messages lors d'un apt update :

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "fr_FR.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

ou encore ces messages avec apt upgrade, après chaque installation ou mise à jour de paquets :

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Pas de panique, j'ai quelques solutions pour régler le problème si vous aussi y êtes confronté.

Dans ce tutoriel, j'utilise "en_US.UTF-8" parce que j'aime tout avoir en anglais. Si vous préférez le français, remplacez tout par "fr_FR.UTF-8".

A lire :  Permettre l'accès à plusieurs répertoires avec FileZilla Server

Etape 1 : éditez .bashrc

Editez votre fichier .bashrc :

nano .bashrc

et ajoutez cette ligne:

export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LANGUAGE="en_US.UTF-8"

Enregistrez le fichier et validez vos changements immédiatement avec la commande source :

source .bashrc

Ou, un chouia plus barbare, quittez votre session SSH puis reconnectez-vous.

Etape 2 : reconfigurer les locales

On commence par générer la locale de notre choix :

locale-gen "en_US.UTF-8"

Et on la reconfigure :

dpkg-reconfigure locales

Il ne reste plus qu'à tester les locales du système:

locale

Résultat:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Et voilà, plus de messages d'avertissement ou d'erreur concernant les locales de votre système. Problème réglé.

Pour développer votre projet WordPress ou Woocommerce, faites appel à mon expertise pour réaliser un site rapide, performant et fonctionnel.

Contactez-moi

Si vous avez trouvé une faute d’orthographe, informez-nous en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée s’il vous plaît.

Articles en rapport:

Linux : résoudre l'erreur "Cannot set LC_ALL to default locale"

par Matt Lecture: 2 min
2

Pin It on Pinterest

Share This

Spelling error report

The following text will be sent to our editors: