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?
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:
LANG
dans le fichier d'initialisation de votre shell.ssh hunter2
, utilisez la commande LANG=C ssh hunter2
.SendEnv LANG LC_*
dans le fichier local /etc/ssh/ssh_config
. (Merci à cette réponse . Voir Bogue 1285 pour OpenSSH pour plus d'informations.)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
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
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 .
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.
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.
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.
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
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
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.
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
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.
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.
Conservez votre fichier/etc/ssh/sshd-config original
Mettez votre ~/.bash_profile
export LANG="en_US"
export LC_ALL=$LANG.UTF-8
Courir
dpkg-reconfigure locales
Et sélectionnez "en_US.UTF-8"
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
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
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
pour moi, je corrige cette erreur en modifiant le fichier .bashrc add export. Ajouter après les commentaires initiaux.
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,
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
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:
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.
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.
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 :)
Ajoutez LC_ALL="en_GB.utf8"
à /etc/environment
et redémarrez. C'est tout.
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
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
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
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 ...
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.
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.
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é.
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
é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.
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)
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:
export LANG=fr_FR.UTF-8
export LC_ALL=fr_FR.UTF-8
fr_FR.UTF-8
dans le fichier etc/locale.gen
-> Sudo locale-gen
pour générer le package manquant.Sudo update-locale
Sudo dpkg-reconfigure locales
pour configurer mes paramètres régionaux sur fr_FR.UTF-8
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
Bonne chance!
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.
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:
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.
Changez la configuration SSH pour ne PAS transmettre les variables d'environnement de vos clients. Je ne recommanderais pas cela.
Remplacez les paramètres régionaux sur votre ordinateur distant en exportant les paramètres régionaux à partir de .bashrc et de vos amis.