Eu configurei um servidor Ubuntu 16.04 novo, mas quando tento alterar permanentemente as configurações do código do idioma, ele falha e volta ao código do POSIX.
A digitação locale
produz 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=
Que eu saiba, isso significa que nenhum código de idioma foi definido, pois a documentação indica POSIX é a " codificação ASCII de fallback, igual a C ".
Para garantir as localidades de_AT.utf8
e en_US.utf8
estar presente no meu sistema, executei locale -a
, o que resultou em:
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
Observe as inconsistências com C.UTF-8
, mas de_AT.utf8
! O que mais me preocupa é que o POSIX é a terceira entrada, enquanto em um sistema de trabalho diferente, é o último da lista.
Para mudar meu idioma en_US.utf8
, digitei sudo update-locale LANG=en_US.utf8
. O locale
comando ainda mostrava o código do idioma POSIX. Após um logout e novo login, locale
ainda mostrava o código do idioma POSIX. Após uma reinicialização, locale
ainda mostrava o código do idioma POSIX.
No entanto, quando eu digito export LANG=en_US.utf8
, ele funciona temporariamente, mas apenas até o logout. Como tal, tenho certeza de que os códigos de idioma foram gerados corretamente.
Estou sem idéias. Tentei regenerar todos os locais, mas parece que isso /etc/default/locale
está simplesmente sendo ignorado.
Para fins de conclusão, /etc/default/locale
contém apenas a linhaLANG=en_US.utf8
UPDATE: // Tentei executar sudo localectl set-locale LANG=en_US.UTF-8
e localectl
também me mostrou que ele definia o código do idioma, mas mesmo após uma reinicialização, locale
ainda mostra caracteres POSIX e não ASCII ainda não são renderizados corretamente.
systemd
caminho localectl set-locale LANG=C.UTF-8
:?
/etc/pam.d
, deve funcionar. Mas como um hack por enquanto, você pode criar /etc/profile.d/mylocalesetting.sh
e adicionar a linha export LANG=en_US.UTF-8
.
/etc/default/locale
é lido pelo PAM. Você possivelmente desativou o PAM?