18 votes

CentOS 6 et erreur de locale

Je viens d'installer CentOS 6 et chaque fois que je me connecte au système via SSH à distance, j'obtiens l'erreur suivante :

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

Lorsque je tape "locale" sur la ligne de commande, j'obtiens le résultat suivant :

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=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=

Quel peut être le problème ? Comment puis-je résoudre ce problème ?

18voto

Liam Rabe Points 13

J'ai résolu le problème en désactivant l'option "Set locale environment variables on startup" dans Terminal Settings > Advanced (Paramètres du terminal > Avancés), comme le montre cette capture d'écran.

enter image description here

NOTE : Si vous utilisez iTerm2, vous pouvez désactiver l'option "Définir automatiquement les variables locales" dans Préférences > Profils > Terminal.

12voto

gpupo Points 1084

C'est simple :

Ajouter

 LC_CTYPE="en_US.UTF-8"

à /etc/sysconfig/i18n .

11voto

jeffreypriebe Points 1070

Sur le serveur à partir duquel vous vous connectez en ssh, les paramètres linguistiques sont-ils définis via une variable d'environnement ? En regardant mon installation CentOS 6, la seule locale que je peux trouver prise en charge est identifiée comme étant en_US.utf8 (découverte à l'aide de locale -a ). Le problème pourrait-il venir de là ?

Lors de mes tests, lorsque j'ai défini l'option LC_ALL à la variable d'environnement en_US.UTF-8 Après m'être connecté au serveur, le résultat de ma commande locale était le suivant POSIX dans mon cas. C'est la même chose que lorsque je n'ai PAS défini (c'est-à-dire que j'ai désactivé) l'option LC_ALL avant de se connecter.

Lorsque j'ai défini mon LC_ALL à la variable en_US.utf8 o en_US.utf-8 Lors de l'installation de l'application, en se connectant à ma machine CentOS 6, le résultat de la locale était le même que celui qui avait été défini sur la machine source.

Remarquez que je n'ai pas utilisé de majuscules pour l'UTF également.

2voto

gnrfan Points 171

Ce qui a fonctionné pour moi, c'est l'ajout d'un lien symbolique dans le serveur CentOS comme ceci :

ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/UTF-8

Une fois que vous avez fait cela, des commandes comme celle-ci fonctionnent :

export LC_CTYPE=UTF-8

Si vous ne le faites pas, cette dernière commande échoue avec cette erreur :

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

Une solution encore plus simple consiste à ajouter cette ligne au fichier /etc/bashrc du serveur :

export LC_CTYPE="en_US.utf8"

2voto

Kaalahaan Points 21

J'ai obtenu ce message spécifique lors de la connexion d'un Solaris X à un hôte Centos.

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Le problème provient de deux paramètres :

  1. Dans mon système par défaut ssh_config, je demande au système de passer ces variables.

Envoi de variables d'environnement liées aux paramètres locaux SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. Sur mon hôte source, ces paramètres ont été définis de la manière suivante :

    SOURCE# LANG= LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=fr_FR.UTF-8 LC_TIME=fr_FR.UTF-8 LC_COLLATE=fr_FR.UTF-8 LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr.UTF-8 LC_ALL=

Mais, comme vous pouvez le voir, le LC_MESSAGES est défini sur fr.UTF-8, ce qui n'est pas une option sur mon hôte de destination.

 DEST#locale -a | grep fr_FR
 fr_FR
 fr_FR@euro
 fr_FR.iso88591
 fr_FR.iso885915@euro
 fr_FR.utf8

Le problème a été résolu en forçant sur mon hôte source, sur .bash_profile : # export LC_ALL=fr_FR.UTF-8 export LANG=fr_FR.UTF-8

J'aurais pu résoudre ce problème en demandant à mon hébergeur de ne pas prendre cette variable pour toute connexion ssh (en général, ou en créant un fichier local ssh_config pour mon utilisateur).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X