CentOS 6 y error local

16

Acabo de instalar CentOS 6 y cada vez que inicio sesión en el sistema a través de SSH de forma remota, aparece el siguiente error:

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

Cuando escribo "locale" en la línea de comando, obtengo el siguiente resultado:

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=

¿Cual puede ser el problema? ¿Cómo puedo resolver este problema?

Cem
fuente
su solución de comentar el SendEnv LANG LC_ * arg funcionó para mí en Mac OS X 10.7.5

Respuestas:

10

En el servidor desde el que ssh, ¿tiene una configuración regional establecida a través de una variable de entorno? Al mirar mi instalación de CentOS 6, la única configuración regional que puedo encontrar compatible se identifica como en_US.utf8(descubierta mediante el locale -acomando). ¿Podría ser este el problema?

En mis pruebas, cuando configuré la LC_ALLvariable de entorno en en_US.UTF-8ssh'd al servidor, la salida de mi comando de configuración regional se configuró POSIXen mi caso. Esto es lo mismo que cuando NO he establecido (es decir, desarmado) la LC_ALLvariable antes de ssh'ing.

Cuando configuré mi LC_ALLvariable en en_US.utf8o en_US.utf-8, ssh'd en mi casilla CentOS 6, la salida de la configuración regional fue la misma que la establecida en la casilla de origen.

Observe que no utilicé ningún límite para UTF también

mdpc
fuente
11
Por cierto, noté que esto estaba ocurriendo desde la configuración ssh de mi Mac OS X Lion. Edité el archivo / etc / ssh_config y comenté SendEnv LANG LC_ *. Solucionó mi problema.
Cem
@Cem Gracias por el consejo, esto realmente lo corrige en Mac OS X Lion.
Zsolt Török
17

Resolvió esto deshabilitando "Establecer variables de entorno local en el inicio" en Configuración de terminal> Avanzado según esta captura de pantalla.

ingrese la descripción de la imagen aquí

NOTA: Si usa iTerm2 puede deshabilitar la opción "Establecer variables locales automáticamente" en Preferencias> Perfiles> Terminal

Nils
fuente
1
Esto funcionó para mí. Específicamente, Terminal.app estaba configurando "LC_CTYPE = UTF-8" que luego causó los errores reportados por el OP. Alternativamente, unset LC_CTYPEo export LC_CTYPE=en_US.UTF-8arregle el problema después de iniciar sesión.
tarda
Esto lo resolvió para mí, gracias
pjvds
11

Manera simple:

Añadir

 LC_CTYPE="en_US.UTF-8"

a /etc/sysconfig/i18n.

gpupo
fuente
A mí me funciona, después de tantos intentos.
Tommy
2

Lo que funcionó para mí fue agregar un enlace simbólico en el servidor CentOS como este:

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

Una vez que haces eso, los comandos como este funcionan:

export LC_CTYPE=UTF-8

Si no lo hace, este último comando falla con este error:

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

Ahora, una solución aún más simple es simplemente agregar esta línea a / etc / bashrc en el servidor:

export LC_CTYPE="en_US.utf8"
gnrfan
fuente
¡Gracias por el aporte! Esto funcionó muy bien. Finalmente capaz de eliminar ese comentario molesto ...
cristobal
2

Recibí este mensaje específico cuando inicio sesión desde un Solaris X a un host 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

El problema proviene de 2 configuraciones:

  1. En mi sistema predeterminado ssh_config, le pido al sistema que pase esas variables.

Enviar variables de entorno relacionadas con la configuración regional SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

  1. En mi host de origen, esta configuración se configuró de esta manera:

    FUENTE # 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 =

Pero, como puede ver, LC_MESSAGES está configurado en fr.UTF-8, que no es una opción en mi host de destino.

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

El problema se resolvió forzando en mi host de origen, en .bash_profile: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8

Podría haberlo resuelto pidiéndole a mi host de destino que no tome esta variable de ninguna conexión ssh (en general, o creando un archivo loca ssh_config para mi usuario)

Kaalahaan
fuente
1

En un sistema Centos 6.2 local: Esto no ayudó:

localedef -i en_US -f UTF-8 en_US.UTF-8

Esto funcionó:

localedef --no-archive -i en_US -f UTF-8 en_US.UTF-8

También borré locale-archiveen /usr/lib/locale. No sé si esto fue necesario.

BobM
fuente
1

Esta fue mi solución en el pasado para los errores de configuración regional.

Ejecute lo siguiente: locale-gen

Luego edite /etc/locale.gen. Asegúrese de que lo siguiente no esté comentado:

en_US.UTF-8 UTF-8  
en_US ISO-8859-1  

generate locale

locale-gen
Thomas Vincent
fuente
1

Con Iterm2 , es diferente.
Vaya a Iterm2 -> Preferences, luego vaya a la Profilespestaña y elija la Terminalpestaña de la parte inferior.
Ir a la Environmentcategoría y desmarcar;

Establecer variables locales automáticamente

Finalmente, cierre e inicie una nueva sesión.

ingrese la descripción de la imagen aquí

crsuarezf
fuente
0

y asegúrese de que LC_ALL="en_US.UTF-8"esté o se haya agregado a / etc / sysconifg / i18n

contenido de ejemplo

LANG="en_GB.UTF-8"
SYSFONT="latarcyrheb-sun16"
LC_ALL="en_US.UTF-8" 
mayod
fuente
-3

editar /etc/sysconfig/i18n

Cambiar LANG="us"aLANG="en_US"

Guardar y salir, cerrar sesión y volver a iniciar sesión.

NateDJ
fuente