Não é possível alterar permanentemente a localidade no servidor 16.04

4

Eu configurei um novo servidor Ubuntu 16.04, mas quando tento alterar permanentemente as configurações de localidade, ele falha e volta ao local POSIX.

Digitar locale gera o seguinte:

LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

No meu conhecimento, isso significa que nenhuma localidade foi definida, já que a documentação indica que POSIX é a " fall-back, codificação ASCII, igual a C ".

Para garantir que as localidades de_AT.utf8 e en_US.utf8 estavam presentes no meu sistema, eu corri locale -a , o que rendeu:

C
C.UTF-8
POSIX
de_AT.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8

Por favor, note as inconsistências com C.UTF-8 , mas de_AT.utf8 ! O que mais me preocupa é que POSIX é a terceira entrada, enquanto que em um sistema diferente, é o último da lista.

Para alterar meu idioma para en_US.utf8 , digitei sudo update-locale LANG=en_US.utf8 . O comando locale ainda mostrava o código do idioma POSIX. Após um logout e um novo login, locale ainda mostrava a localidade POSIX. Após uma reinicialização, locale ainda mostrou a localidade POSIX.

No entanto, quando digito export LANG=en_US.utf8 , ele funciona temporariamente, mas somente até o logout. Como tal, tenho certeza de que as localidades foram geradas corretamente.

Estou sem ideias. Eu tentei regenerar todas as localidades, mas parece que /etc/default/locale está sendo simplesmente ignorado.

Para fins de conclusão, /etc/default/locale contém apenas a linha LANG=en_US.utf8

UPDATE: // Tentei executar sudo localectl set-locale LANG=en_US.UTF-8 e localectl também me mostrou que definiu a localidade, mas mesmo depois de uma reinicialização, locale ainda mostra POSIX e não-ASCII caracteres ainda não são renderizados corretamente.

    
por David Stockinger 10.05.2016 / 16:44

3 respostas

5

A resposta foi de fato relacionada ao PAM, como Gunnar Hjalmarsson mencionou em um comentário. O PAM foi desativado por meio de sshd_config , embora eu sinceramente não me lembre de fazer isso sozinho.

Para resumir: Se /etc/default/locale parecer estar sendo ignorado, verifique se o PAM está ativado.

    
por David Stockinger 11.05.2016 / 11:48
5

Execute os seguintes comandos:

locale-gen en_US.UTF-8
dpkg-reconfigure locale
dpkg-reconfigure keyboard-configuration
localedef -i en_US -c -f UTF-8 en_US.UTF-8
reboot
locale
    
por Videonauth 10.05.2016 / 16:51
3

O que acabei fazendo foi uma combinação das técnicas acima

Eu fiz primeiro

dpkg-reconfigure locales

e inglês escolhido, utf8, então:

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

Editado também / etc / default / locale para se parecer com:

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

E após a reinicialização, quando eu digito locale , agora fica assim:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.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=en_US.UTF-8

E não há mais avisos ...

    
por Aleksandar Pavić 17.03.2017 / 20:57