Ich habe einen neuen Ubuntu 16.04-Server eingerichtet, aber wenn ich versuche, die Gebietsschemaeinstellungen dauerhaft zu ändern, schlägt dies fehl und kehrt zum POSIX-Gebietsschema zurück.
Die Eingabe locale
ergibt Folgendes:
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=
Meines Wissens bedeutet dies, dass überhaupt kein Gebietsschema festgelegt wurde, da in der Dokumentation angegeben ist , dass POSIX die " Fallback-ASCII-Codierung wie C " ist.
Um die Gegenden zu gewährleisten de_AT.utf8
und en_US.utf8
auf meinem System vorhanden waren, lief ich locale -a
, was ergab:
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
Bitte beachten Sie die Inkonsistenzen mit C.UTF-8
, aber de_AT.utf8
! Was mich weiter beunruhigt, ist, dass POSIX der dritte Eintrag ist, während es auf einem anderen funktionierenden System der letzte auf der Liste ist.
Um meine Sprache zu ändern en_US.utf8
, habe ich getippt sudo update-locale LANG=en_US.utf8
. Der locale
Befehl zeigte weiterhin das POSIX-Gebietsschema an. Nach einer Abmeldung und einer neuen Anmeldung wurde locale
weiterhin das POSIX-Gebietsschema angezeigt. Nach einem Neustart wurde locale
immer noch das POSIX-Gebietsschema angezeigt.
Wenn ich tippe export LANG=en_US.utf8
, funktioniert es jedoch vorübergehend, jedoch nur bis zur Abmeldung. Daher bin ich mir ziemlich sicher, dass die Gebietsschemas korrekt generiert wurden.
Ich habe keine Ideen mehr. Ich habe versucht, alle Gebietsschemas neu zu generieren, aber es sieht so aus, als würde /etc/default/locale
es einfach ignoriert.
/etc/default/locale
Enthält der Vollständigkeit halber nur die ZeileLANG=en_US.utf8
UPDATE: // Ich habe versucht, es auszuführen sudo localectl set-locale LANG=en_US.UTF-8
, und localectl
mir auch gezeigt, dass es das Gebietsschema festlegt, aber auch nach einem Neustart werden locale
immer noch POSIX- und Nicht-ASCII-Zeichen angezeigt, die immer noch nicht korrekt gerendert werden.
/etc/default/locale
wird von PAM gelesen. Haben Sie möglicherweise PAM deaktiviert?systemd
:localectl set-locale LANG=C.UTF-8
?/etc/pam.d
, sollte es funktionieren. Aber als Hack für den Moment möchten Sie vielleicht/etc/profile.d/mylocalesetting.sh
die Linie erstellen und hinzufügenexport LANG=en_US.UTF-8
.Antworten:
Was ich schließlich getan habe, ist eine Kombination der oben genannten Techniken
Ich habe es zuerst getan
und wählte Englisch, utf8, dann:
Außerdem wurde / etc / default / locale so bearbeitet , dass es so aussieht:
Und nach dem Neustart sieht es jetzt so aus , wenn ich das Gebietsschema eingebe :
Und keine Warnungen mehr ...
quelle
Die Antwort war in der Tat PAM-bezogen, wie Gunnar Hjalmarsson in einem Kommentar erwähnte. PAM wurde über deaktiviert
sshd_config
, obwohl ich mich ehrlich gesagt nicht daran erinnere, dies selbst getan zu haben.Zusammenfassend: Wenn
/etc/default/locale
dies ignoriert zu werden scheint, überprüfen Sie, ob PAM aktiviert ist.quelle
Führen Sie die folgenden Befehle aus:
quelle
locale
zeigt immer noch POSIX für allesBei der Bereitstellung einiger neuer 16.04.5-VMs bin ich genau auf dieses Problem gestoßen, jedoch mit
xrdp
anstelle von SSH. Ich habe dies gelöst, indem ich Folgendes hinzugefügt habe/etc/pam.d/common-session
:Wenn Sie für zusätzliche Sprachen und Kulturen in verschiedenen Anmeldemethoden sensibel sind, können Sie diese
/etc/pam.d/xrdp-sesman
stattdessen in (oder eine andere PAM-Konfigurationsdatei) einfügen. Dies kann der Grund sein, warum es nicht standardmäßig vorhanden ist? Dies ist in den folgenden PAM-Konfigurationen bei unseren neuen VM-Installationen standardmäßig der Fall:cron, lightdm *, login, polkit-1, sshd, su und sudo.
Ich hoffe, dies hilft jemandem mit diesem Problem, wenn andere Anmeldemethoden als SSH verwendet werden.
Kennt jemand Best Practices für die PAM-Konfiguration / Modifikation von Common- *? Wenn es einen besseren Weg gibt, dies in Gang zu bringen, wäre es gut, dies zu beheben.
quelle