Lorsque j'essaie toujours d'installer un nouveau package, je reçois ce message:
Can't set locale; make sure $LC_* and $LANG are correct!
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = "en_GB:en",
LC_ALL = (unset),
LC_CTYPE = "en_GB.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
Perl: warning: Falling back to the standard locale ("C").
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
Mon système d'exploitation est Debian Jessie 8.3 (Mate) en utilisant l'anglais avec un clavier français. Quand je tape locale, j'obtiens ceci:
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
LANG=en_US.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE=en_GB.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=
Debian livre les locales sous forme source. Ils doivent être compilés explicitement. La raison en est que les locales compilées utilisent beaucoup plus d'espace disque, mais la plupart des gens n'en utilisent que quelques-unes.
Courir dpkg-reconfigure locales
en tant que root, sélectionnez les paramètres régionaux souhaités dans la liste (avec vos paramètres, vous avez besoin de en_GB
et en_US.UTF-8
- Je recommande de sélectionner en_US
et en_GB.UTF-8
également), puis appuyez sur <OK>
.
Vous pouvez également modifier /etc/locale.gen
, décommentez les lignes des paramètres régionaux souhaités et exécutez locale-gen
en tant que root.
(Remarque: sur Ubuntu, cela fonctionne différemment: exécutez locale-gen
avec les paramètres régionaux que vous souhaitez générer comme arguments, par exemple Sudo locale-gen en_GB en_US en_GB.UTF-8 en_US.UTF-8
.)
Alternativement, Debian a maintenant un paquet locales-all
que vous pouvez installer au lieu de locales
. Il a tous les paramètres régionaux pré-générés. L'inconvénient est qu'ils utilisent plus d'espace disque (112 Mo contre 16 Mo).
La solution la mieux notée n'a pas aidé dans mon cas, j'ai donc utilisé celle-ci:
export LC_ALL="en_US.UTF-8"
Sudo dpkg-reconfigure locales
Après cela, je me suis déconnecté et connecté et une erreur était manquante.
Ces commandes m'ont sauvé la vie
# echo "LC_ALL=en_US.UTF-8" >> /etc/environment
# echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
# locale-gen en_US.UTF-8
Si vous rencontrez ce problème sur un Raspberry Pi (ou autre?) Et que vous obtenez l'erreur lorsque vous vous connectez au pi, il existe 2 autres solutions
L'un est éditer /etc/ssh/sshd_config
sur le pi et commentez la ligne
AcceptEnv LANG LC_*
par exemple Sudo nano /etc/ssh/sshd_config
Après quoi, vous devez redémarrer le serveur ssh
Sudo systemctl restart ssh
L'autre est sur votre machine client (pas le pi) éditez /etc/ssh/ssh_config
(chemin différent de celui ci-dessus) et commentez la ligne
SendEnv LANG LC_*
Vous devez installer le package locales
(ou locales-all
ou les paramètres régionaux en_GB, selon la version de Debian que vous avez).
Une solution de contournement pour ne pas avoir de telles erreurs: définissez LANG=C
pour rooter, afin qu'il utilise no locales.