web-dev-qa-db-fra.com

Comment réparer un avertissement de paramètres régionaux de Perl?

Lorsque je lance Perl, je reçois l'avertissement:

Perl: warning: la définition des paramètres régionaux a échoué. 
 Perl: warning: Vérifiez que vos paramètres régionaux sont les suivants: 
 LANGUAGE = (non défini), 
 LC_ALL = (non défini), 
 LANG = "en_US.UTF-8" 
 Sont pris en charge et installés sur votre système. 
 Perl: warning: Revenir aux paramètres régionaux ("C").

Comment je le répare?

548
xain

Votre système d'exploitation 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 sortie 
 Perl: avertissement: la configuration de la locale a échoué. 
 Perl: avertissement: cochez cette case. que vos paramètres régionaux: 
 LC_ALL = (non défini), 
 LANG = "en_US.UTF-8" 
 sont pris en charge et installés sur votre système. 
 Perl: avertissement: retomber à la locale standard ("C").

Je suppose que vous avez utilisé ssh pour vous connecter à cet ancien hôte depuis un ordinateur de bureau plus récent. Il est courant que /etc/ssh/sshd_config contienne

AcceptEnv LANG LC_*

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

L'avertissement vous indique comment le supprimer si vous n'avez pas besoin de la locale complète:

% env LANG = C Perl -e sortie 
%

ou avec bash:

$ LANG = C Perl -e exit 
 $ 

Pour une solution permanente, choisissez l’une des options suivantes:

  1. Sur l'hôte plus ancien, définissez la variable d'environnement LANG dans le fichier d'initialisation de votre shell.
  2. Modifiez votre environnement côté client , par exemple , plutôt que ssh hunter2, utilisez la commande LANG=C ssh hunter2.
  3. Si vous avez des droits d'administrateur, empêchez ssh d'envoyer les variables d'environnement en mettant en commentaire la ligne SendEnv LANG LC_* dans le fichier local /etc/ssh/ssh_config . (Merci à cette réponse . Voir Bogue 1285 pour OpenSSH pour plus d'informations.)
415
Greg Bacon

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

Ajoutez 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
444
Allen Bargi

Si vous créez un rootfs en utilisant debootstrap, vous devrez générer les paramètres régionaux. Vous pouvez le faire en lançant:

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

# then regenerate
Sudo locale-gen

Ce conseil provient de https://help.ubuntu.com/community/Xen

193
Marc

Cela signifie généralement que vous n'avez pas correctement configuré les paramètres régionaux sur votre machine Linux.

Sur Debian ou Ubuntu, cela signifie que vous devez faire

$ Sudo locale-gen 
 $ Sudo dpkg-reconfigure locales

Voir aussi man locale-gen .

133
Paul Tomblin

Utilisation:

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

Cela fonctionne 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.

131
artemn

Pour les utilisateurs de MacOS et 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 les paramètres de mon terminal.

enter image description here

88
Inder Kumar Rathore

C'est une solution simple dans Ubuntu. Vous devez générer les paramètres régionaux à 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 paramètres régionaux, puis les reconfigurer.

35
jfreak53

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 reconnectez-vous.

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
25
warvariuc

Ajouter ce qui suit à /etc/environment a corrigé le problème sur Debian et Ubuntu (bien sûr, modifier pour correspondre à la langue que vous souhaitez utiliser):

LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8
25
joscarsson

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

première:

Sudo apt-get purge locales

ensuite:

Sudo aptitude install locales

et le célèbre:

Sudo dpkg-reconfigure locales

Cela élimine le système de locales, puis réinstalle les locales et rétrograde libc6 de 2.19 à 2.13, ce qui est le problème. Puis configure à nouveau les paramètres régionaux.

20
tkjef

C'est une réponse rapide. Nous allons définir les paramètres régionaux qui ne sont pas désactivés après le redémarrage. Commencez par ouvrir le fichier bash et éditez-le:

nano .bashrc

ajoutez ces lignes au fichier:

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

activer le changement en rechargeant bash:

source ~/.bashrc

résultats de test :

locale
13
Alouani Younes

Pour Ubuntu, utilisez ceci,

#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

Travaillé pour moi.

13
Amjith

Si vous utilisez Mac OS X v10.1 (Yosemite) ou une version ultérieure pour vous connecter à votre serveur Linux, vous pouvez essayer ces étapes.

  1. Conservez votre fichier/etc/ssh/sshd-config original

  2. Mettez votre ~/.bash_profile

    export LANG="en_US"
    export LC_ALL=$LANG.UTF-8
    
  3. Courir

    dpkg-reconfigure locales
    

    Et sélectionnez "en_US.UTF-8"

11
dsandrade

Vous devez configurer les paramètres régionaux de manière appropriée dans /etc/default/locale, déconnexion, connexion, puis exécutez les commandes normales.

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
glarrain
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 (k_UA.UTF-8 est mon environnement local actuel. Ecrivez votre environnement local, par exemple en_US.UTF-8!)

Sudo locale-gen uk_UA.UTF-8

et ça.

Sudo dpkg-reconfigure locales
9
bogdanvlviv
Sudo nano /etc/locale.gen

Décommentez les paramètres régionaux que vous souhaitez utiliser (par exemple, en_US.UTF-8 UTF-8):

Puis lancez:

Sudo /usr/sbin/locale-gen

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

9
Thomas Jensen

pour moi, je corrige cette erreur en modifiant le fichier .bashrc add export. Ajouter après les commentaires initiaux.

Ajouter langue suport.

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,

7
LandiLeite

Ajouter les paramètres régionaux corrects à ~/.bashrc, ~/.bash_profile, /etc/environment, etc., résoudra le problème. Toutefois, cela n’est pas recommandé, car il remplace les paramètres de /etc/default/locale, qui est au mieux déroutant et peut conduire à ce que les paramètres régionaux ne soient pas appliqués systématiquement au pire.

Au lieu de cela, on devrait éditer directement /etc/default/locale, ce qui pourrait ressembler à ceci:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US

La modification entrera en vigueur lors de votre prochaine connexion. Vous pouvez obtenir les nouveaux paramètres régionaux dans un Shell existant en recherchant /etc/default/locale comme ceci:

$ . /etc/default/locale
6
Nuvanda

Pour toute personne se connectant à DigitalOcean ou à un autre fournisseur d'hébergement Cloud à partir de iTerm2.app sur MacOS High Sierra et obtenant 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ésolu 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 à quel point cela peut être agaçant.

5
Blago Eres

Suite à la réponse acceptée:

LANG = C ssh chasseur2.

LC_ALL = C ssh hunter2

du côté du client a fait le tour pour moi.

4
Alex Kosenkov

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 supprimant la ligne export LANG=en_US.UTF-8

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

4
Joseph Briggs

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

3
zires

Ajouter les paramètres régionaux manquants à .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

dans mon cas, avec debian8.6, je devais modifier les paramètres dans:

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

et sshd_config pour #SendEnv LANG LC_*

puis redémarrez le service ssh.

enfin

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

2
張祐榕

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

Sur Mac OS X v10.7.5 (Lion), pour corriger une erreur Django , dans mon ~/.bash_profile j'ai défini:

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 pendant un long moment, j’ai eu cet avertissement lors de l’utilisation de Perl.

Ma faute! Comme je m'en suis rendu compte bien 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
Luca Bonavita

Pour moi, le buntu 16.04 (Xenial Xerus) a fonctionné comme suit:

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
Aleksandar Pavić

Si vous ne vous souciez pas du problème des paramètres régionaux, vous pouvez définir Perl_BADLANG=0 . Bien entendu, cela pourrait entraîner une localisation incorrecte.

1
Craig Ringer

Une autre réponse liée à Git:

La source du problème pourrait être le serveur Git . Si tout échoue, essayez de faire dpkg-reconfigure locales (ou ce qui convient à votre distribution) sur le serveur.

1
Adrian W

Toutes les réponses précédentes sont fausses. Le message est clair - paramètres régionaux manquants. La solution consiste à ajouter les paramètres régionaux appropriés. Pour ce faire, éditez le fichier /etc/locale.gen, supprimez le signe # devant les paramètres régionaux signalés comme étant manquants, puis exécutez la commande:

$ Sudo locale-gen

Cela générera les paramètres régionaux spécifiés dans /etc/locale.gen et par conséquent, le message ne sera pas affiché.

1

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

ssh écrase LC variables locales par défaut. Voir /etc/ssh/sshd_config:

AcceptEnv LANG LC_*

Vous devez donc peut-être définir ces variables dans votre shell local.

1
garaboncias

Dans Arch Linux en utilisant un clavier/des paramètres régionaux au Royaume-Uni, j'avais 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"
  • L'exportation de mes paramètres régionaux dans /etc/profile n'a pas résolu le problème.

  • J'ai cependant résolu ce problème en éditant /etc/locale.gen et en permettant également
    les en_US.utf8 paramètres régionaux que Perl devrait trouver et exécuter local-gen.

(J'utilise pac-manager qui utilise tout un tas de Perl modules d'AUR, donc réinstaller Perl dans mon cas particulier serait une nuisance)

1
Stuart Cardall

Pour l’utilisateur Debian, j’ai ce problème après avoir modifié mes paramètres régionaux pour changer la langue de la machine. C'est ce que j'ai fait:

  1. Modifier .bashrc:
export LANG=fr_FR.UTF-8
export LC_ALL=fr_FR.UTF-8
  1. Décommenter la ligne fr_FR.UTF-8 dans le fichier etc/locale.gen -> Sudo locale-gen pour générer le package manquant.
  2. Sudo update-locale
  3. Sudo dpkg-reconfigure locales pour configurer mes paramètres régionaux sur fr_FR.UTF-8
  4. ajoute une ligne supplémentaire au fichier etc/default/locale:
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
LC_TYPE=en_US.UTF-8
  1. Redémarrez mon ordinateur et tout fonctionne bien

Bonne chance!

0
Lala

Si vous exécutez un chroot dans CentOS, essayez de copier manuellement /usr/lib/locale dans l'environnement chroot du compte présentant ce problème.

0
EpicVoyage

Si ce problème se produit lorsque vous vous connectez via ssh à un hôte distant, il est possible que le système distant manque de certains paramètres régionaux. Je ne vais pas répéter comment installer et configurer les paramètres régionaux, car cela a déjà été expliqué par d'autres réponses.

Comme d'autres réponses l'ont souligné, ssh devrait transmettre les paramètres régionaux de vos ordinateurs locaux à l'hôte distant. Par exemple, si vous avez défini des paramètres régionaux australiens (par exemple, en_AU.UFT-8) et que vous vous connectez à un serveur Ubuntu nouvellement installé, fourni uniquement avec en_US.UTF-8, vous recevrez cet avertissement.

Pour résoudre ce problème, vous avez plusieurs options:

  1. Installez les paramètres régionaux requis sur l'hôte distant de sorte qu'ils correspondent aux paramètres régionaux configurés sur votre client.

  2. Changez la configuration SSH pour ne PAS transmettre les variables d'environnement de vos clients. Je ne recommanderais pas cela.

  3. Remplacez les paramètres régionaux sur votre ordinateur distant en exportant les paramètres régionaux à partir de .bashrc et de vos amis.

0
lanoxx