locales quebrados no Beaglebone Black executando o Debian

1

Então tudo isso começou quando eu quis instalar meu daemon customizado no meu Beaglebone Black rodando Debian usando update-rc.d mydaemon defaults 97 como eu fiz várias vezes durante o desenvolvimento no meu host Mint. E sou saudado com:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
   LANGUAGE = (unset),
   LC_ALL = (unset),
   LC_PAPER = "es_CL.UTF-8",
   LC_ADDRESS = "es_CL.UTF-8",
   LC_MONETARY = "es_CL.UTF-8",
   LC_NUMERIC = "es_CL.UTF-8",
   LC_TELEPHONE = "es_CL.UTF-8",
   LC_IDENTIFICATION = "es_CL.UTF-8",
   LC_MEASUREMENT = "es_CL.UTF-8",
   LC_NAME = "es_CL.UTF-8",
   LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
update-rc.d: using dependency based boot sequencing

Que depois tentei corrigir com dpkg-reconfigure locales , ao qual ele responde

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_PAPER = "es_CL.UTF-8",
    LC_ADDRESS = "es_CL.UTF-8",
    LC_MONETARY = "es_CL.UTF-8",
    LC_NUMERIC = "es_CL.UTF-8",
    LC_TELEPHONE = "es_CL.UTF-8",
    LC_IDENTIFICATION = "es_CL.UTF-8",
    LC_MEASUREMENT = "es_CL.UTF-8",
    LC_NAME = "es_CL.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
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
  en_US.ISO-8859-1...locale alias file '/usr/share/locale/locale.alias' not found: No such file or directory
 done
Generation complete.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_MONETARY = "es_CL.UTF-8",
    LC_ADDRESS = "es_CL.UTF-8",
    LC_TELEPHONE = "es_CL.UTF-8",
    LC_NAME = "es_CL.UTF-8",
    LC_MEASUREMENT = "es_CL.UTF-8",
    LC_IDENTIFICATION = "es_CL.UTF-8",
    LC_NUMERIC = "es_CL.UTF-8",
    LC_PAPER = "es_CL.UTF-8",
    LANG = "C"
     are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_MONETARY = "es_CL.UTF-8",
    LC_ADDRESS = "es_CL.UTF-8",
    LC_TELEPHONE = "es_CL.UTF-8",
    LC_NAME = "es_CL.UTF-8",
    LC_MEASUREMENT = "es_CL.UTF-8",
    LC_IDENTIFICATION = "es_CL.UTF-8",
    LC_NUMERIC = "es_CL.UTF-8",
    LC_PAPER = "es_CL.UTF-8",
    LANG = "C"
     are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Eu não tenho ideia de como consertar isso, pois ele se recusa a me permitir instalar qualquer pacote ou atualizar qualquer coisa ... Alguém tem alguma ideia? Estou perplexo ...

p.s. Eu vi Configurar locais no Debian e isso não funciona para mim (ou seja, source /etc/default/locale )

p.p. eu também verifiquei o /etc/locales.gen shell e en_US.UTF-8 UTF-8 não está comentando como deveria ser, e o script de shell sugere executar locale-gen e eu obtenho

Generating locales (this might take a while)...
en_US.UTF-8...locale alias file '/usr/share/locale/locale.alias' not found: No such file or directory
    
por Chris 03.03.2015 / 22:35

1 resposta

3

Então, depois de examinar todos os manuais do Debian e a compilação do BeagleBone, eu finalmente descobri o que aconteceu! Eu pensei em colocar isso para o caso de alguém se deparar com esse problema. A fim de corrigir os códigos de idioma, eu precisei reescrever manualmente o arquivo /etc/default/locale com: (se você estiver no norte-americano, por exemplo, você usaria "en_US.UTF-8" para todos).

LANG="en_US.UTF-8"
LC_NUMERIC="es_CL.UTF-8"
LC_MONETARY="es_CL.UTF-8"
LC_PAPER="es_CL.UTF-8"
LC_NAME="es_CL.UTF-8"
LC_ADDRESS="es_CL.UTF-8"
LC_TELEPHONE="es_CL.UTF-8"
LC_MEASUREMENT="es_CL.UTF-8"
LC_IDENTIFICATION="es_CL.UTF-8"

Você precisa garantir que o script de shell /etc/locale.gen tenha todas as localidades que você pretende usar não comentadas, por exemplo, sudo nano /etc/locale.gen .

Você então precisa consertar o link simbólico que as localidades esperam, que o kernel deveria ter feito na instalação, isto é feito por: sudo ln -s /etc/locale.alias /usr/share/locale/locale.alias

Por fim, execute dpkg-reconfigure locales para corrigir a vinculação, e tudo deve estar funcionando bem agora.

(Em uma nota: percebi depois que o update-rc.d é uma ferramenta legada nos últimos lançamentos do Debian, como o preto do BeagleBone, o daemon shell deve ser instalado usando insserv mydaemon )

    
por 04.03.2015 / 14:26