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?
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
- sur l'hôte plus ancien, définissez la variable d'environnement
LANG
dans le fichier d'initialisation de votre shell. - modifier votre environnement du côté du client, par exemple , plutôt que
ssh hunter2
, utilisez la commandeLANG=C ssh hunter2
. - 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.)
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
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
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 .
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.
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.
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.
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
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
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.
si vous utilisez Mac OS X v10.10 (Yosemite) ou plus haut pour vous connecter à votre serveur Linux, vous pouvez essayer ces étapes.
-
Gardez votre fichier /etc/ssh/sshd-config d'origine
-
mettez votre ~/.bash_profile
export LANG="en_US" export LC_ALL=$LANG.UTF-8
-
Exécuter
dpkg-reconfigure locales
et sélectionnez" en_US.UTF-8 "
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
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
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
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.
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,
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.
ajouter LC_ALL="en_GB.utf8"
à /etc/environment
et redémarrer. C'est tout.
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:)
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
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:
je sais que ce fil est vieux mais peut-être que quelqu'un trouvera cela utile. Je sais combien cela peut être ennuyeux.
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
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
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.
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.
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...
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é.
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
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
laen_US.utf8
locale queperl
s'attendait à trouver et exécuterlocal-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)
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