¿Cómo soluciono mi problema de configuración regional?

458

Recibo este mensaje cada vez que hago algo como iniciar o detener un servicio.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.UTF-8",   
        LANG = "en_US.UTF-8"   
    are supported and installed on your system.   
perl: warning: Falling back to the standard locale ("C").   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   

¿Cómo soluciono este error?

    
pregunta HackToHell 11.07.2012 - 16:08

19 respuestas

468

Primero ejecute locale para mostrar las configuraciones regionales actualmente definidas para la cuenta de usuario actual:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

Luego, genere la configuración regional que falta y reconfigure las configuraciones regionales para tomar nota:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

¡Ya no verá más errores!

    
respondido por el Otto Kekäläinen 10.12.2012 - 13:45
337

Nada sugerido anteriormente funcionó en mi caso (Ubuntu Server 12.04LTS). Lo que finalmente ayudó estaba poniendo al archivo /etc/environment :

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

Por alguna razón, faltaba. Las salidas para la configuración regional y otros comandos aparecieron como si las variables estuvieran definidas correctamente. En otras palabras, no dé por sentado que todo lo básico se declara donde debería declararse.

    
respondido por el Marcin 16.12.2012 - 05:11
139

Deberían desaparecer después de emitir:

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

dpkg-reconfigure reconfigura paquetes después de que ya hayan sido        instalado Pase los nombres de un paquete o paquetes para reconfigurar.        Hará preguntas de configuración, al igual que cuando el paquete era        primero instalado.

    
respondido por el Rinzwind 11.07.2012 - 16:19
106

Simplemente agregue lo siguiente a su archivo .bashrc (suponiendo que esté usando bash)

export LC_ALL="en_US.UTF-8"
    
respondido por el ratz 08.11.2012 - 10:42
88

Este es un problema común si se conecta de forma remota, por lo que la solución es no reenviar su configuración regional. Edite /etc/ssh/ssh_config y comente SendEnv LANG LC_* línea.

    
respondido por el user249697 01.10.2014 - 02:45
62

Hay un comando para eso:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

Actualiza /etc/default/locale con los valores proporcionados.

    
respondido por el sgtpep 01.08.2014 - 13:51
30

Lo que funcionó para mí en 12.10 fue esto:

apt-get install language-pack-en-base  

Esto fue después de que dpkg-reconfigure locales no produjo ningún resultado.

    
respondido por el George Answerology 28.04.2013 - 04:01
16

No olvides salir de tu sesión SSH (o tu X11) saliendo y volviendo a iniciar sesión. Todas estas sugerencias no me funcionaron a menos que volviera a iniciar sesión ...

    
respondido por el Michael R. Hines 26.09.2014 - 08:51
11

Para Ubuntu 12.10 ninguno de los anteriores funcionaba excepto la solución de ratzs. Recomiendo agregar esto a su archivo /etc/bash.bashrc:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
    
respondido por el Lovemore Nalube 27.03.2013 - 04:19
11

Me quedé atrapado en un estado extraño en el que mi máquina local está configurada en es y, por lo tanto, la máquina remota (a través de vagrant ) se aprovisionó en un estado no administrado. Por lo tanto, tuve que usar el manual export= solo para facilitar un dpkg-reconfigure exitoso. Entonces el sistema está bien.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
    
respondido por el charneykaye 22.03.2016 - 19:02
9

Escribí un script bash para corregirlo Problema anterior. Las respuestas anteriores son útiles pero la configuración de las variables de configuración regional simplemente exportando los valores en la variable de shell funcionará solo para una sesión. Resolví permanentemente este problema exportando las variables de configuración regional en el archivo .bash_profile. También puede usar /etc/profile file en lugar de .bash_profile .

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

No te olvides de source el .bash_profile y sigue la script en una configuración fácil.

    
respondido por el Ajeet Khan 27.02.2016 - 20:26
8

Puedes intentarlo:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

donde ru_RU es el código de su país.

    
respondido por el Koss 17.06.2013 - 15:34
6

Como dijo aquí en Debian Wiki , puedes editar /etc/locale.gen y agregar todas las configuraciones regionales (o descomentarlas, Tenía una lista de todas las configuraciones regionales pero todas menos la que utilicé como comentarios) en las que desea tener soporte en su sistema. Luego, ejecuta

sudo dpkg-reconfigure locales

para actualizar las configuraciones regionales en su sistema. Ahora, todas las configuraciones regionales que agregó / descomentó en /etc/locale.gen están disponibles en su sistema sin advertencias.

    
respondido por el msrd0 14.12.2014 - 12:28
6

La respuesta aceptada actual no es suficiente en la estrategia de solución de problemas porque puede tener un error humano. Configuraste tu sistema en en_US pero tienes en_GB habilitado en /etc/locale.gen como lo tenía en el hilo aquí para Raspberry Pi 3b. Debería tener todas las configuraciones regionales usadas habilitadas en /etc/locale.gen .

Tenía en_GB.UTF-8 UTF-8 solo habilitado en /etc/locale.gen . Debería haber habilitado solo en_US.UTF-8 UTF-8 porque otros comandos se ejecutan para él. Así que comenté GB y Estados Unidos sin comentarios, y todo funciona ahora

[email protected]:~ $ sudo vim /etc/locale.gen

[email protected]:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

[email protected]:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

Ahora, no obtengo esos errores locales con ningún comando.

Sistema: Raspbian Jessie
Hardware: Raspberry Pi 3b

    
respondido por el Léo Léopold Hertz 준영 22.06.2016 - 22:25
3

Si usa el entorno de KDE, verifique el archivo setlocale.sh en ~/.kde/env/ :

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
    
respondido por el MaximKostrikin 05.02.2014 - 09:36
2
  1. Es posible que deba ejecutar sudo dpkg-reconfigure también para la aplicación que ha instalado mientras que la configuración de "configuración regional" no es válida o no coincide.

    Mientras que la configuración regional del sistema se configuró incorrectamente, instalé vim . Más tarde, cuando se solucionó la configuración del sistema, vi una situación en la que vim mostraba caracteres utf-8 incorrectamente como símbolos extraños, mientras que nano y less los mostraban correctamente. Ejecutando

    sudo dpkg-reconfigure vim
    

    pareció solucionar el problema una vez que se corrigieron las configuraciones del sistema.

  2. También noté lo mismo que ya se mencionó: es posible que deba desconectar / volver a conectar SSH para hacer cambios visibles.

respondido por el ajaaskel 18.12.2014 - 20:02
2

Agregar el siguiente texto a ~/.profile me funciona:

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

Estoy usando el servidor Ubuntu 16.04 LTS de 64 bits en Linode.

    
respondido por el Jingguo Yao 09.05.2017 - 05:07
1

Esto funcionó para mí cuando tuve el mismo problema (basado en la solución proporcionado por dman ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
    
respondido por el pythonhunter 27.08.2014 - 07:21
1

Estaba teniendo problemas para ejecutar el tema 'Agnoster' con oh-my-zsh en mi estación de trabajo docker ized con mensajes de error similares. (Es más rápido que wsl IMO y puedo montar docker.sock en este contenedor mediante Hyper-V VM administrado por Docker For Windows , lo que me permite hacer cosas de docker)

Combinar algunas de las sugerencias de las respuestas me ayudó a solucionarlo.

Agregué esto a mi Dockerfile

RUN apt-get install -y locales
RUN sudo locale-gen "en_US.UTF-8"
RUN echo 'LANG="en_US.UTF-8"' > /etc/profile.d/locale.sh
RUN echo 'LANGUAGE="en_US.UTF-8"' >> /etc/profile.d/locale.sh
RUN echo 'LC_ALL="en_US.UTF-8"' >> /etc/profile.d/locale.sh

Esta es una idea fundamental si quieres probarla.

    
respondido por el sdkks 30.06.2018 - 16:25

Lea otras preguntas en las etiquetas