apt-get error: “localidade: Não é possível definir LC_CTYPE como localidade padrão: nenhum arquivo ou diretório desse tipo”

4

Ao executar o apt-get eu recebo o erro locale: Cannot set LC_CTYPE to default locale: No such file or directory . O que posso fazer para corrigir esse erro?

Estou conectando de uma caixa executando o Mac OS X.

    
por intlect 09.11.2011 / 23:56

3 respostas

4

Definitivamente, há algo de errado com OS X (pode ser apenas Lion )

Qual é o problema?

O OS X não define corretamente o ambiente local. Além disso, o OS X chama o conjunto de caracteres UTF-8 na sintaxe combinada de localidades de maneira diferente do Linux.

Como consertar isso?

Você pode encontrar várias "correções" no Google, a maioria delas não funciona ou é apenas parte do problema, porque elas são destinadas a um problema diferente, criando erros iguais ou semelhantes.

Acho que a maneira mais razoável é consertar seu ambiente local no cliente OS X. Se você executar o comando locale no seu cliente OS X, ele mostrará um ambiente incompleto. A linguagem não está definida.

osx-client:~$ locale
LANG=           << EMPTY!
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=         << EMPTY!

Portanto, no arquivo ~/.bash_profile na sua máquina local , basta adicionar

export LANG="en_US"
export LANGUAGE=$LANG
export LC_ALL=$LANG

Você pode, é claro, substituir o en_US pelo seu idioma desejado, apenas certifique-se de instalar também seu código de idioma no servidor (por exemplo, no Debian com dpkg-reconfigure locales ). Não esqueça de fechar e reabrir o seu Terminal.

No entanto, não use as variantes .UTF . Eles só funcionam no servidor ou localmente. OS X e seu servidor Linux possuem um nome diferente para UTF-8 na sintaxe combinada de language.charset. Se você usar, por exemplo, en_US.utf8 , isso causará um erro localmente enquanto ele funciona "bem" remotamente, enquanto usar en_US.utf-8 funcionará localmente, mas causará o erro em seu servidor. Apenas use a definição de linguagem simples. O conjunto de caracteres deve acabar sendo UTF-8 de qualquer maneira.

Você pode testar se funciona apenas executando locale novamente no servidor, se você vir a mensagem temida na parte superior, isso não funcionará. Se você errou localmente, verá um erro ao abrir uma nova janela do Terminal.

Faltam locales no servidor

Se ainda não estiver funcionando, talvez esteja faltando sua localidade selecionada no servidor. Você pode estar errado com "en_US", mas pode querer um diferente. Como instalar uma localidade depende da distribuição dos servidores.

  • No Debian, chame dpkg-reconfigure locales e selecione sua localidade.
    • Se você for solicitado a selecionar um idioma padrão, poderá selecionar um ou deixá-lo em nenhum. Não importa aqui.
por 20.12.2012 / 13:21
1

A resolução é simples se você estiver executando o Mac OS X ao ver esse erro por meio do ssh:

sudo nano / etc / ssh_config Comente a seguinte linha: "SendEnv LANG LC _ *"

    
por 09.11.2011 / 23:57
1

Execute dpkg-reconfigure locales no seu Ubuntu, certifique-se de que pelo menos uma das opções esteja selecionada. Se você não tem certeza do que escolher, sugiro en_US.UTF-8 .

Se você estiver se conectando via SSH a partir de um sistema, convém ter certeza de que gerou as localidades usadas pelos sistemas clientes que serão conectados. Você pode selecionar quantas para as localidades gerarem como quiser / precisar.

Como você mencionou na sua resposta, você pode optar por impedir o SSH de enviar ou aceitar as variáveis de LC *.

De um cliente ssh, desative isto.

ssh_config:    SendEnv LANG LC_*

No servidor SSH, você pode bloquear a aceitação das variáveis, removendo isso.

sshd_config:AcceptEnv LANG LC_*
    
por 09.11.2011 / 23:59