Je reçois ce message chaque fois que je fais quelque chose comme démarrer ou arrêter un service.
Perl: warning: Setting locale failed.
Perl: warning: Please check that your locale settings:
LANGUAGE = "en_US:en",
LC_ALL = (unset),
LC_MESSAGES = "en_US.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_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
(Reading database ... 21173 files and directories currently installed.)
Removing bind9 ...
* Stopping domain name service... bind9 [ OK ]
Processing triggers for man-db ...
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
Comment puis-je corriger cette erreur?
Commencez par exécuter locale
pour répertorier les paramètres régionaux actuellement définis pour le compte d'utilisateur actuel:
$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
Générez ensuite les paramètres régionaux manquants et reconfigurez les paramètres régionaux pour en tenir compte:
$ Sudo locale-gen "en_US.UTF-8"
Generating locales...
en_US.UTF-8... done
Generation complete.
$ Sudo dpkg-reconfigure locales
Generating locales...
en_US.UTF-8... up-to-date
Generation complete.
Maintenant, vous ne verrez plus aucune erreur!
Rien suggéré ci-dessus n'a fonctionné dans mon cas (Ubuntu Server 12.04LTS). Ce qui a finalement aidé a été de mettre dans le fichier /etc/environment
:
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
Pour une raison quelconque, il manquait. Les sorties de locale et d’autres commandes sont apparues comme si les variables étaient correctement définies. En d'autres termes, ne tenez pas pour acquis que tous les éléments de base sont déclarés là où ils doivent être déclarés.
Ils devraient disparaître après avoir émis:
Sudo locale-gen en_US en_US.UTF-8
Sudo dpkg-reconfigure locales
dpkg-reconfigure
reconfigure les packages après qu'ils ont déjà été installés. Transmettez-lui les noms d’un ou de plusieurs paquets à reconfigurer. Il posera des questions sur la configuration, un peu comme lors de la première installation du paquet.
Ajoutez simplement ce qui suit à votre fichier .bashrc
(en supposant que vous utilisez bash)
export LC_ALL="en_US.UTF-8"
Il s'agit d'un problème courant si vous vous connectez à distance. La solution consiste donc à ne pas transférer vos paramètres régionaux. Éditez /etc/ssh/ssh_config
et commentez la ligne SendEnv LANG LC_*
.
Il y a une commande pour ça:
Sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
Il met à jour /etc/default/locale
avec les valeurs fournies.
Ce qui a fonctionné pour moi le 12.10 était ceci:
apt-get install language-pack-en-base
C'était après que dpkg-reconfigure locales
n'a donné aucun résultat.
N'oubliez pas de quitter votre session SSH (ou votre X11) en le quittant et en vous reconnectant. Toutes ces suggestions ne fonctionnaient pas pour moi à moins que je ne me reconnecte ....
J'étais coincé dans un état étrange où ma machine locale est définie sur es
et que la machine distante (via vagrant
name__) avait été provisionnée dans un état non traité. Par conséquent, je devais utiliser le manuel export=
uniquement pour faciliter le succès de dpkg-reconfigure
. Ensuite, le système va bien.
export LC_ALL="en_US.UTF-8"
Sudo dpkg-reconfigure locales
Pour Ubuntu 12.10, rien de ce qui précède n’a fonctionné, à l’exception de la solution de ratzs. Je recommande de l'ajouter à votre fichier /etc/bash.bashrc:
export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
J'ai écrit un script bash pour résoudre le problème ci-dessus. Les réponses ci-dessus sont utiles, mais définir les variables de paramètres régionaux en exportant simplement les valeurs dans la variable Shell ne fonctionnera que pour une session. J'ai définitivement résolu ce problème en exportant les variables de paramètres régionaux dans le fichier .bash_profile. Vous pouvez également utiliser le fichier /etc/profile
au lieu de .bash_profile
.
echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile
N'oubliez pas de source
le .bash_profile
et suivez le script dans une configuration facile.
Tu peux essayer:
export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
où ru_RU
est le code de votre pays.
La réponse acceptée actuelle n'est pas suffisante dans la stratégie de dépannage, car vous pouvez avoir une erreur humaine. Vous configurez votre système sur en_US
mais en_GB
est activé dans/etc/locale.gen
comme dans le fil ici pour Raspberry Pi 3b. Vous devriez avoir tous vos paramètres régionaux utilisés activés dans /etc/locale.gen
.
en_GB.UTF-8 UTF-8
n'était activé que dans /etc/locale.gen
. Je n'aurais dû activer que en_US.UTF-8 UTF-8
à cause d'autres commandes exécutées pour cela. J'ai donc commenté GB et les États-Unis non commentés, et tout fonctionne maintenant
masi@raspberrypi:~ $ Sudo vim /etc/locale.gen
masi@raspberrypi:~ $ Sudo locale-gen
Generating locales (this might take a while)...
en_US.UTF-8... done
Generation complete.
masi@raspberrypi:~ $ Sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled
Maintenant, je ne reçois pas ces erreurs de locale avec des commandes.
Système: Jessie Raspbian
Matériel: Raspberry Pi 3b
Comme dit ici dans le wiki de Debian , vous pouvez éditer /etc/locale.gen
et ajouter tous les paramètres régionaux (ou les décommenter, j'avais une liste de tous les paramètres régionaux, mais tous sauf ceux que j'ai utilisés en tant que commentaires) que vous souhaitez obtenir de l'aide. pour sur votre système. Ensuite, exécutez
Sudo dpkg-reconfigure locales
mettre à jour les paramètres régionaux sur votre système. Désormais, tous les paramètres régionaux que vous avez ajoutés/non commentés dans /etc/locale.gen
sont disponibles sur votre système sans aucun avertissement.
Si vous utilisez l'environnement KDE, vérifiez le fichier setlocale.sh
dans ~/.kde/env/
:
$ cat ~/.kde/env/setlocale.sh
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
Vous devrez peut-être exécuter Sudo dpkg-reconfigure
également pour l'application que vous avez installée alors que les paramètres "régionaux" ne sont pas valides/ne correspondent pas.
Alors que les paramètres régionaux du système n’étaient pas correctement configurés, j’ai installé vim
. Plus tard, lorsque les paramètres régionaux du système ont été corrigés, j'ai constaté une situation dans laquelle vim
affichait incorrectement les caractères utf-8 sous forme de symboles étranges alors que nano
et less
les affichaient correctement. Fonctionnement
Sudo dpkg-reconfigure vim
semblait résoudre le problème après la correction des paramètres système.
J'ai également remarqué la même chose que ce qui a déjà été mentionné: vous devrez peut-être déconnecter/reconnecter SSH pour rendre les modifications visibles.
Ajouter le texte suivant à ~/.profile
fonctionne pour moi:
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
J'utilise un serveur Ubuntu 16.04 LTS 64 bits sur Linode.
Cela a fonctionné pour moi quand j'ai eu le même problème (basé sur la solution fournie par dman ):
Sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"