He configurado un nuevo servidor Ubuntu 16.04, pero cuando intento cambiar permanentemente la configuración regional, falla y vuelve a la configuración regional POSIX.
Al escribir se locale
obtiene lo siguiente:
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 yo sepa, esto significa que no se ha establecido ninguna configuración regional, ya que la documentación indica que POSIX es la " codificación ASCII alternativa, igual que C ".
Para asegurar que las configuraciones regionales de_AT.utf8
y en_US.utf8
estuvieran presentes en mi sistema, ejecuté locale -a
, lo que produjo:
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
Tenga en cuenta las inconsistencias con C.UTF-8
, pero de_AT.utf8
! Lo que más me preocupa es que POSIX es la tercera entrada, mientras que en un sistema de trabajo diferente, es el último de la lista.
Para cambiar mi idioma en_US.utf8
, escribí sudo update-locale LANG=en_US.utf8
. El locale
comando aún mostraba la localización POSIX. Después de un cierre de sesión y un nuevo inicio de sesión, locale
todavía se muestra el entorno local POSIX. Después de un reinicio, locale
todavía se muestra el entorno local POSIX.
Sin embargo, cuando escribo export LANG=en_US.utf8
, funciona temporalmente, pero solo hasta que finalice la sesión. Como tal, estoy bastante seguro de que las configuraciones regionales se generaron correctamente.
Se me acabaron las ideas. Intenté regenerar todas las configuraciones regionales, pero parece que /etc/default/locale
simplemente se está ignorando.
En aras de la finalización, /etc/default/locale
solo contiene la líneaLANG=en_US.utf8
ACTUALIZACIÓN: // Intenté ejecutar sudo localectl set-locale LANG=en_US.UTF-8
, y localectl
también me mostró que establece la configuración regional, pero incluso después de un reinicio, locale
todavía muestra POSIX y los caracteres no ASCII todavía no se representan correctamente.
/etc/default/locale
es leída por PAM. ¿Posiblemente desactivaste PAM?systemd
formalocalectl set-locale LANG=C.UTF-8
:?/etc/pam.d
, debería funcionar. Pero como truco por ahora, es posible que desee crear/etc/profile.d/mylocalesetting.sh
y agregar la líneaexport LANG=en_US.UTF-8
.Respuestas:
Lo que eventualmente hice es una combinación de las técnicas anteriores
Primero he hecho
y elegí inglés, utf8, luego:
También edité / etc / default / locale para que se vea así:
Y después de reiniciar, cuando escribo locale ahora se ve así:
Y no más advertencias ...
fuente
La respuesta estaba relacionada con PAM, como Gunnar Hjalmarsson mencionó en un comentario. PAM fue deshabilitado a través de
sshd_config
, aunque honestamente no recuerdo haberlo hecho.Para resumir: si
/etc/default/locale
parece que se ignora, verifique si PAM está habilitado.fuente
Ejecute los siguientes comandos:
fuente
locale
todavía muestra POSIX para todoAl implementar algunas nuevas máquinas virtuales 16.04.5, me encontré con este problema exacto, pero en
xrdp
lugar de SSH. Resolví esto agregando lo siguiente a/etc/pam.d/common-session
:Si es sensible a idiomas y culturas adicionales a través de los métodos de inicio de sesión, puede colocar esto
/etc/pam.d/xrdp-sesman
(u otro archivo de configuración de PAM) en su lugar. Esto puede ser por qué no está allí por defecto? Esto está en las siguientes configuraciones de PAM por defecto en nuestras nuevas instalaciones de VM:cron, lightdm *, login, polkit-1, sshd, su y sudo.
Espero que esto ayude a alguien con este problema dados los métodos de inicio de sesión que no sean SSH.
¿Alguien conoce las mejores prácticas para la configuración / modificación PAM de common- *? Si hay una mejor manera de hacer que esto funcione, sería bueno hacerlo.
fuente