Comment résoudre mon problème de paramètres régionaux?

453

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?

    
posée HackToHell 11.07.2012 - 16:08
la source

19 réponses

464

Exécutez d'abord locale pour répertorier les paramètres régionaux 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=

Ensuite, générez 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 d’erreurs!

    
réponse donnée Otto Kekäläinen 10.12.2012 - 13:45
la source
333

Rien n’a été suggéré dans mon cas (Ubuntu Server 12.04LTS). Ce qui a finalement aidé mettait au fichier /etc/environment :

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

Pour une raison quelconque, il manquait. Les sorties pour les paramètres régionaux et les autres commandes sont apparues comme si les variables étaient correctement définies. En d'autres termes, ne tenez pas pour acquis tous les éléments de base sont déclarés où ils doivent être déclarés.

    
réponse donnée Marcin 16.12.2012 - 05:11
la source
139

Ils devraient disparaître après l’émission:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigure reconfigure les paquets après qu'ils ont déjà été        installée. Transmettez-lui les noms d'un package ou de packages à reconfigurer.        Il posera des questions de configuration, un peu comme lorsque le paquet était        d'abord installé.

    
réponse donnée Rinzwind 11.07.2012 - 16:19
la source
106

Ajoutez simplement ce qui suit à votre fichier .bashrc (en supposant que vous utilisez bash)

export LC_ALL="en_US.UTF-8"
    
réponse donnée ratz 08.11.2012 - 10:42
la source
86

C'est un problème courant si vous vous connectez à distance, la solution est donc de ne pas transférer vos paramètres régionaux. Modifiez /etc/ssh/ssh_config et mettez en commentaire la ligne SendEnv LANG LC_* .

    
réponse donnée user249697 01.10.2014 - 02:45
la source
61

Il existe une commande pour cela:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

Il met à jour /etc/default/locale avec les valeurs fournies.

    
réponse donnée sgtpep 01.08.2014 - 13:51
la source
29

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'ait produit aucun résultat.

    
réponse donnée George Answerology 28.04.2013 - 04:01
la source
16

N'oubliez pas de quitter votre session SSH (ou votre X11) en quittant et en vous reconnectant. Toutes ces suggestions n'ont pas fonctionné pour moi à moins que je me reconnecte ...

    
réponse donnée Michael R. Hines 26.09.2014 - 08:51
la source
11

Pour Ubuntu 12.10, rien de ce qui précède n’a fonctionné, à part la solution ratzs. Je recommande d'ajouter ceci à votre fichier /etc/bash.bashrc:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
    
réponse donnée Lovemore Nalube 27.03.2013 - 04:19
la source
11

J'étais coincé dans un état étrange où ma machine locale était définie sur es et donc la machine distante (via vagrant ) avait été provisionnée dans un état non géré. Par conséquent, j'ai dû utiliser le manuel export= uniquement pour faciliter le succès de dpkg-reconfigure . Alors le système va bien.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
    
réponse donnée charneykaye 22.03.2016 - 19:02
la source
9

J'ai écrit un script bash pour corriger problème ci-dessus.Les réponses ci-dessus sont utiles, mais la définition des variables locales 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 /etc/profile file 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 de suivre la script dans une configuration facile.

    
réponse donnée Ajeet Khan 27.02.2016 - 20:26
la source
8

Vous pouvez 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

ru_RU est le code de votre pays.

    
réponse donnée Koss 17.06.2013 - 15:34
la source
6

Comme dit ici dans le wiki 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 celui que j'avais utilisé en tant que commentaire, que vous souhaitiez prendre en charge sur votre système. Ensuite, exécutez

sudo dpkg-reconfigure locales

pour mettre à jour les paramètres régionaux sur votre système. Désormais, tous les paramètres régionaux ajoutés / décomptés dans /etc/locale.gen sont disponibles sur votre système sans aucun avertissement.

    
réponse donnée msrd0 14.12.2014 - 12:28
la source
6

La réponse actuellement acceptée 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 devez avoir tous vos paramètres régionaux utilisés activés dans /etc/locale.gen .

J'avais en_GB.UTF-8 UTF-8 seulement activé dans /etc/locale.gen . J'aurais dû y activer uniquement en_US.UTF-8 UTF-8 à cause d'autres commandes exécutées pour cela. J'ai donc commenté GB et les États-Unis sans commentaire, 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 localisation avec les commandes.

Système: Raspbian Jessie
Matériel: Raspberry Pi 3b

    
réponse donnée Léo Léopold Hertz 준영 22.06.2016 - 22:25
la source
3

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
    
réponse donnée MaximKostrikin 05.02.2014 - 09:36
la source
2
  1. Vous devrez peut-être exécuter sudo dpkg-reconfigure également pour l'application que vous avez installée, alors que les paramètres "paramètres régionaux" ne sont pas corrects / 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 vu une situation où vim affichait incorrectement des caractères utf-8 comme symboles étranges tandis que nano et less les montraient correctement. Courir

    sudo dpkg-reconfigure vim
    

    a semblé résoudre le problème après la correction des paramètres du système.

  2. J'ai également remarqué la même chose que celle déjà mentionnée: vous devrez peut-être déconnecter / reconnecter SSH pour que les modifications soient visibles.

réponse donnée ajaaskel 18.12.2014 - 20:02
la source
2

Ajouter le texte suivant à ~/.profile fonctionne pour moi:

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

J'utilise le serveur Ubuntu 16.04 LTS 64 bits sur Linode.

    
réponse donnée Jingguo Yao 09.05.2017 - 05:07
la source
1

Cela a fonctionné pour moi lorsque j'ai eu le même problème (basé sur la solution fourni par dman ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
    
réponse donnée pythonhunter 27.08.2014 - 07:21
la source
1

J'avais un problème lors de l'exécution du thème 'Agnoster' avec oh-my-zsh dans mon poste de travail docker avec des messages d'erreur similaires. (Il est plus rapide que wsl IMO et je peux monter docker.sock dans ce conteneur via Hyper-V VM géré par Docker For Windows , ce qui me permet de faire des choses avec docker)

La combinaison de certaines des suggestions des réponses m'a aidé à le résoudre.

J'ai ajouté ceci à mon Dockerfile

RUN apt-get install -y locales
RUN sudo locale-gen "en_US.UTF-8"
RUN echo 'LANG="en_US.UTF-8"' > /etc/profile.d/locale.sh
RUN echo 'LANGUAGE="en_US.UTF-8"' >> /etc/profile.d/locale.sh
RUN echo 'LC_ALL="en_US.UTF-8"' >> /etc/profile.d/locale.sh

Voici une idée si vous voulez essayer .

    
réponse donnée sdkks 30.06.2018 - 16:25
la source

Lire d'autres questions sur les étiquettes