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.
/etc/default/locale
é lido pelo PAM. Você possivelmente desativou o PAM?systemd
caminholocalectl 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 linhaexport LANG=en_US.UTF-8
.Respostas:
O que finalmente fiz foi uma combinação das técnicas acima
Eu fiz primeiro
e optou por inglês, utf8, então:
Também editou / etc / default / locale para se parecer com:
E depois da reinicialização, quando digito locale, ele fica assim:
E não há mais avisos ...
fonte
A resposta foi de fato relacionada ao PAM, como Gunnar Hjalmarsson mencionou em um comentário. O PAM foi desativado via
sshd_config
, embora eu honestamente não me lembre de fazê-lo.Para resumir: Se
/etc/default/locale
parece estar sendo ignorado, verifique se o PAM está ativado.fonte
Execute os seguintes comandos:
fonte
locale
ainda mostra POSIX para tudoAo implantar algumas novas VMs 16.04.5, deparei-me com esse problema exato, mas com o
xrdp
SSH. Resolvi isso adicionando o seguinte a/etc/pam.d/common-session
:Se você é sensível a idiomas e culturas adicionais nos métodos de login, pode colocar isso
/etc/pam.d/xrdp-sesman
(ou outro arquivo de configuração do PAM). Pode ser por isso que não existe por padrão? Está nas seguintes configurações do PAM, por padrão, em nossas novas instalações de VM:cron, lightdm *, login, polkit-1, sshd, su e sudo.
Espero que isso ajude alguém com esse problema, usando métodos de login diferentes do SSH.
Alguém conhece as práticas recomendadas para configuração / modificação do PAM do common- *? Se existe uma maneira melhor de fazer isso, seria bom fazer isso.
fonte