locale vs. localectl

20/07/2015 - 19:30 von Kai Bojens | Report spam
System: CentOS 7

Ich habe hier gerade ein massives Verstàndnisproblem im Hinblick
auf die locales und systemd. Folgende Werte sind offenbar gesetzt:

$: localectl status
System Locale: LANG=de_DE.UTF-8
LC_MESSAGES=en_US.UTF-8
VC Keymap: de-latin1-nodeadkeys
X11 Layout: de
X11 Model: pc105
X11 Variant: nodeadkeys
X11 Options: terminate:ctrl_alt_bksp

Wenn ich aber mit "locale" abfrage, bekomme ich das hier:

$: locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL
Man beachte vor allem den Unterschied bei "LC_MESSAGES". Welche Werte
haben denn nun Vorrang? Meine /etc/locale.conf sieht so aus:

LANG=de_DE.UTF-8
LC_COLLATE=de_DE.UTF-8
LC_CTYPE=de_DE.UTF-8
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_MESSAGES=en_US.UTF-8

Konkret habe ich das Problem, das Umlaute in einigen Anwendungen (tin)
nicht korrekt angezeigt werden, wàhrend sie in anderen (mutt, irssi) keine
Probleme bereiten. Auch das pasten an der Konsole zeigt Umlautfehler,
etwas für Dateien, die ISO-8859-1 kodiert sind.
 

Lesen sie die antworten

#1 Juergen Ilse
20/07/2015 - 22:38 | Warnen spam
Hallo,

Kai Bojens wrote:
System: CentOS 7
Ich habe hier gerade ein massives Verstàndnisproblem im Hinblick
auf die locales und systemd.



Ich habe auch ein massives Verstaendnisproblem, warum der systemd da
ueberhaupt irgend ein geschwurbel mit locale treibt ...

Folgende Werte sind offenbar gesetzt:
$: localectl status
System Locale: LANG=de_DE.UTF-8
LC_MESSAGES=en_US.UTF-8
VC Keymap: de-latin1-nodeadkeys
X11 Layout: de
X11 Model: pc105
X11 Variant: nodeadkeys
X11 Options: terminate:ctrl_alt_bksp



Die Autoren von systemd haben anscheinend nicht begriffen, dass die
locale-Einstellungen keine systemspezifischen sondern nur prozess-
spezifische Einstellungen sind. Selbiges Missverstaendnis haben sie
auch bei den Zeitzonen-Einstellungen. Deshalb sind sie auch der
irrigen Meinung, man muesste alls Programme im system ueber irgend
welche Aenderungen von Zeitzonen informieren (welche Zeitzone? Die
in der sich der Rechner gerade befindet? Oder die in der sich ein
Benutzer gerade befindet? Wenn letzteres, welcher Benutzer? Und
nein, die passende Einstellung kann fuer heden Benutzer des Systems
eine andere sein und muss fuer keinen User mit der Zeitzone ueber-
einstimmen, in der sich die Hardware ferade befindet ...).

Wenn ich aber mit "locale" abfrage, bekomme ich das hier:

$: locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL


In derr shell, in der du das Kommando aufgerufen hast, gelten diese
Einstellungen, und die werden an die subprozesse dieser shell vererbt
(ueber das Environment), sie subprozesse dieser shell koennen aber
ihre eigenen locale-Einstellungen bei Bedarf auch wieder aendern.

Man beachte vor allem den Unterschied bei "LC_MESSAGES". Welche Werte
haben denn nun Vorrang?



Die aus dem aktuellen Environment (wenn LC_ALL gesetzt ist, uebersteuert
dieser Wert alle einzeln gesetzten Werte, ist LANG gesetzt, ist der darin
enthaltene Wert die Defaulteinstellung fuer alle nicht explizit gesetzten
Werte).

Meine /etc/locale.conf sieht so aus:

LANG=de_DE.UTF-8
LC_COLLATE=de_DE.UTF-8
LC_CTYPE=de_DE.UTF-8
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_MESSAGES=en_US.UTF-8



Diese Werte sollten eigentlich ein "Systemdefault" sein, mit dem z.B.
ein neu gestarteter Login-Prozess anfaengt (wobei ich nicht weiss, wie
sich das im Zusammenhang mit dem voellig kaputten Konzept dieses
seltsamen "localectl" von systemd verhaelt ...).

Tschuess,
Juergen Ilse ()
Ein Domainname ist nur ein Name, nicht mehr und nicht weniger.
Wer mehr hineininterpretiert, hat das Domain-Name-System nicht
verstanden.

Ähnliche fragen