Comment réparer un paramètre régional d'avertissement de Perl?

quand j'exécute perl , je reçois l'avertissement:

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

Comment puis-je le réparer?

480
demandé sur Rishabh 2010-03-23 15:27:18

30 réponses

votre OS ne connaît pas en_US.UTF-8 .

vous n'avez pas mentionné de plate-forme spécifique, mais je peux reproduire votre problème:

% uname -a
OSF1 hunter2 V5.1 2650 alpha
% perl -e exit
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

à mon avis, vous avez utilisé ssh pour vous connecter à cet ancien hôte à partir d'une nouvelle machine de bureau. Il est courant pour /etc/ssh/sshd_config de contenir

AcceptEnv LANG LC_*

qui permet aux clients de propager dans de nouvelles sessions les valeurs de ces variables d'environnement.

L'avertissement vous donne une indication sur la façon de l'écraser si vous n'avez pas besoin de la locale complète:

% env LANG=C perl -e exit
%

ou avec bash:

$ LANG=C perl -e exit
$ 

pour un fixe permanent, choisissez un de

  1. sur l'hôte plus ancien, définissez la variable d'environnement LANG dans le fichier d'initialisation de votre shell.
  2. modifier votre environnement du côté du client, par exemple , plutôt que ssh hunter2 , utilisez la commande LANG=C ssh hunter2 .
  3. si vous avez des droits d'administrateur, arrêtez ssh d'envoyer les variables d'environnement en commentant la ligne SendEnv LANG LC_* dans le fichier local /etc/ssh/ssh_config . (Merci à cette réponse . Voir Bug 1285 pour OpenSSH pour plus d'informations.)
371
répondu Greg Bacon 2016-09-18 04:56:09

Voici comment le résoudre sur Mac OS Lion (10.7) ou Cygwin (Windows 10):

ajouter les lignes suivantes à votre bashrc ou bash_profile sur la machine hôte:

# Setting for the new UTF-8 terminal support in Lion
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

si vous utilisez zsh, éditez zshrc:

# Setting for the new UTF-8 terminal support in Lion
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
410
répondu Allen Bargi 2017-05-16 10:09:24

si vous créez un rootfs en utilisant debootstrap, vous devrez générer les locales. Vous pouvez le faire en exécutant:

# (optional) enable missing locales
sudo nano /etc/locale.gen

# then regenerate
sudo locale-gen

CE tuyau vient de https://help.ubuntu.com/community/Xen

170
répondu Marc 2017-09-03 21:27:06

cela signifie généralement que vous n'avez pas correctement configuré les locales sur votre machine Linux.

sur Debian ou Ubuntu, cela signifie que vous devez faire""

$ sudo locale-gen
$ sudo dpkg-reconfigure locales

Voir aussi l'homme locale-gen .

123
répondu Paul Tomblin 2010-03-23 15:24:26

utiliser:

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

ça marche pour Debian . Je ne sais pas pourquoi, mais locale - gen n'a pas eu de résultats.

Important! C'est une solution temporaire. Il doit être exécuté pour chaque session.

122
répondu artemn 2017-03-07 08:56:18

Pour macOS et utilisateurs de Mac OS X uniquement

je recevais le même avertissement en utilisant Git

pour résoudre cet avertissement décochez l'option Set locale environment variable on startup et redémarrez votre terminal. La capture d'écran ci-dessous représente mes paramètres de terminal.

enter image description here

79
répondu Inder Kumar Rathore 2018-01-10 20:20:49

il est fix simple dans Ubuntu. Vous devez générer les Locales à partir de zéro, en exécutant les commandes suivantes À partir de la ligne de commande:

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

cela devrait créer les locales et ensuite les reconfigurer.

34
répondu jfreak53 2016-01-08 23:11:34

j'utilise maintenant ceci:

$ cat /etc/environment
...
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

puis déconnectez-vous de la session SSH et ouvrez une nouvelle session.

ancienne réponse:

seulement cela m'a aidé:

$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

$ sudo su

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

# locale-gen en_US.UTF-8
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

# dpkg-reconfigure locales
Generating locales...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8... done
  en_GB.UTF-8... done
  en_HK.UTF-8... done
  en_IE.UTF-8... done
  en_IN.UTF-8... done
  en_NG.UTF-8... done
  en_NZ.UTF-8... done
  en_PH.UTF-8... done
  en_SG.UTF-8... done
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... done
  en_ZM.UTF-8... done
  en_ZW.UTF-8... done
Generation complete.

# exit

$ locale
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
24
répondu warvariuc 2017-02-23 16:42:05

ajouter ce qui suit à /etc/environment résoudre le problème pour moi sur Debian et Ubuntu (bien sûr, Modifier pour correspondre à la locale que vous voulez utiliser):

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8
21
répondu joscarsson 2014-01-26 12:09:27

sur Debian après de nombreuses recherches, cela a fait l'affaire.

d'abord:

sudo apt-get purge locales

puis:

sudo aptitude install locales

et le célèbre:

sudo dpkg-reconfigure locales

cela supprime le système de locales, puis ré-installe locales et dégrade libc6 de 2.19 à 2.13 ce qui est le problème. Puis configure les locales à nouveau.

20
répondu tkjef 2017-05-26 20:03:54

si vous utilisez Mac OS X v10.10 (Yosemite) ou plus haut pour vous connecter à votre serveur Linux, vous pouvez essayer ces étapes.

  1. Gardez votre fichier /etc/ssh/sshd-config d'origine

  2. mettez votre ~/.bash_profile

    export LANG="en_US"
    export LC_ALL=$LANG.UTF-8
    
  3. Exécuter

    dpkg-reconfigure locales
    

    et sélectionnez" en_US.UTF-8 "

11
répondu dsandrade 2016-01-08 23:18:07

vous devez configurer locale de manière appropriée dans /etc/default/locale , logout, login , puis exécuter les commandes régulières

root@host:~# echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale
root@host:~# exit
local-user@local:~$ ssh root@host
root@host:~# locale-gen en_US.UTF-8
root@host:~# dpkg-reconfigure locales
10
répondu glarrain 2015-12-14 17:38:53
sudo nano /etc/locale.gen

désactivez les locales que vous voulez utiliser (par exemple en_US.UTF-8 UTF-8 ):

puis exécuter:

sudo /usr/sbin/locale-gen

Source: http://people.debian.org/~schultmc/locales.html

9
répondu Thomas Jensen 2014-06-16 13:46:36
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

Solution:

Essayez ceci ( uk_UA.UTF-8 est ma localisation actuelle. Écrivez votre locale, par exemple en_US.UTF-8 !)

sudo locale-gen uk_UA.UTF-8

et ceci.

sudo dpkg-reconfigure locales
9
répondu bogdanvlviv 2016-09-28 14:01:16

Pour Ubuntu utiliser cette,

#export LANGUAGE=en_US.UTF-8
#export LC_ALL=en_US.UTF-8
#export LANG=en_US.UTF-8
#export LC_TYPE=en_US.UTF-8

travaillait pour moi.

9
répondu Amjith 2018-04-12 12:59:01

pour moi je corrige cette erreur en éditant le .bashrc fichier ajouter à l'exportation. Ajouter après les commentaires initiaux.

ajouter support de langage.

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

Kind Regads,

6
répondu LandiLeite 2018-01-03 17:07:22

suite à la réponse acceptée:

LANG = C ssh hunter2.

LC_ALL=C SSH hunter2

du côté des clients a fait l'affaire pour moi.

4
répondu Alex Kosenkov 2016-01-08 23:02:37

ajouter LC_ALL="en_GB.utf8" à /etc/environment et redémarrer. C'est tout.

3
répondu zires 2016-01-08 23:13:41

avec zsh ohmyzsh j'ai ajouté ceci au .zshrc :

 # You may need to manually set your language environment
 LANGUAGE=en_US.UTF-8
 LANG=en_US.UTF-8
 LC_CTYPE=en_US.UTF-8
 LC_ALL=en_US.UTF-8

en enlevant la ligne export LANG=en_US.UTF-8

a rouvert un nouvel onglet et SSHed in, travaillé pour moi:)

3
répondu Joseph Briggs 2016-12-25 11:02:13

comme toujours, le diable est dans les détails...

On Mac OS X v10.7.5 (Lion), pour corriger quelques Django erreur, dans mon ~/.bash_profile j'ai mis:

export LANG=en_EN.UTF-8
export LC_COLLATE=$LANG
export LC_CTYPE=$LANG
export LC_MESSAGES=$LANG
export LC_MONETARY=$LANG
export LC_NUMERIC=$LANG
export LC_TIME=$LANG
export LC_ALL=$LANG

et à mon tour pendant longtemps j'ai eu cet avertissement en utilisant Perl.

c'est ma faute! Comme je l'ai réalisé beaucoup plus tard, mon système est en_US.UTF-8 ! Je l'ai corrigé simplement en changeant de

export LANG=en_EN.UTF-8

à

export LANG=en_US.UTF-8
2
répondu Luca Bonavita 2016-01-08 23:08:19

pour toute personne se connectant à DigitalOcean ou un autre fournisseur D'hébergement Cloud de l'iTerm2.app sur MacOS High Sierra et obtenir cette erreur sur certaines commandes:

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

cela a réglé le problème pour moi:

enter image description here

je sais que ce fil est vieux mais peut-être que quelqu'un trouvera cela utile. Je sais combien cela peut être ennuyeux.

2
répondu Ogalb 2017-10-25 17:52:26

ajouter locales manquantes à .bash_profile

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

puis source votre .bash_profile

source ~/.bash_profile
2
répondu Parinda Rajapaksha 2017-11-08 09:44:11

Dans mon cas, c'était la sortie:

LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....

la solution était:

sudo locale-gen ro_RO.UTF-8
1
répondu Rodislav Moldovan 2016-01-08 23:10:15

ssh remplace LC paramètres régionaux de variables par défaut. Voir /etc/ssh/sshd_config :

AcceptEnv LANG LC_*

alors peut-être que vous avez besoin de définir ces variables dans votre shell local.

1
répondu garaboncias 2016-01-08 23:14:26

si vous ne vous souciez pas de la question locale, vous pouvez définir PERL_BADLANG=0 . Bien sûr, cela pourrait entraîner une localisation incorrecte.

1
répondu Craig Ringer 2016-10-04 14:36:23

pour moi, sur Ubuntu 16.04 (Xerus Xenial) les suivants ont travaillé:

root@host:~#locale-gen en_GB.UTF-8
root@host:~#localectl set-locale LANG=en_GB.UTF-8,LC_ALL=en_GB.UTF-8

puis redémarrez...

1
répondu Aleksandar Pavić 2017-05-10 22:29:03

Toutes les réponses précédentes sont fausses. Le message est clair-lieu manquant. La solution est d'ajouter les paramètres régionaux. Vous faites cela en éditant le /etc/locale.gen file, supprimez le signe # devant le lieu signalé comme manquant, puis envoyez la commande:

$ sudo locale-gen

cela générera effectivement les locales spécifiées dans /etc/locale.gen et donc le message ne sera pas affiché.

1
répondu Matthias Hryniszak 2017-05-10 22:30:02

dans mon cas, avec debian8.6, j'ai dû modifier les paramètres:

/etc/ssh/ssh_config pour #AcceptEnv LANG LC_*

et sshd_config pour #SendEnv LANG LC_*

puis redémarrer le service ssh.

enfin, did

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

1
répondu 張祐榕 2017-08-06 09:54:55

Dans Arch Linux à l'aide d'un royaume-UNI clavier / locale, j'ai eu l'erreur suivante:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.utf8"
  • exporter mes locales dans /etc/profile ne l'a pas corrigé.

  • j'ai toutefois corrigé cela en éditant /etc/locale.gen et en activant également

    la en_US.utf8 locale que perl s'attendait à trouver et exécuter local-gen .

(I utiliser pac-manager qui utilise tout un tas de modules perl d'AUR pour réinstaller perl dans mon cas particulier serait une nuisance)

1
répondu Stuart Cardall 2017-11-30 19:13:01

ajouter la bonne localisation à ~/.bashrc , ~/.bash_profile , /etc/environment et cela résoudra le problème, cependant il n'est pas recommandé, car il remplace les paramètres de /etc/default/locale , qui est confus au mieux et peut conduire à des locales ne sont pas appliquées de manière cohérente au pire.

au lieu de cela, on devrait éditer /etc/default/locale directement, qui peut ressembler à quelque chose comme ceci:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US
1
répondu Nuvanda 2018-03-03 21:14:37