sammlung:localectl
Inhaltsverzeichnis
localectl - Locale und Tastaturlayout verwalten
localectl ist ein systemd-Tool zur Verwaltung von System-Locale (Sprach- und Regioneneinstellungen) und Tastaturlayout. Es ermöglicht das Anzeigen und Setzen von Spracheinstellungen, Zeichensätzen und Tastaturbelegungen für Konsole und X11.
Voraussetzungen
- Zugriff auf die Linux-Kommandozeile
- SystemD-basiertes System (Ubuntu 15.04+, Debian 8+, CentOS 7+)
- Root-Rechte zum Ändern der Locale-Einstellungen
Grundlegende Syntax
localectl [OPTIONEN] [BEFEHL]
Was ist Locale?
Locale definiert regionale und sprachliche Einstellungen:
- Sprache der Systemmeldungen
- Zeichensatz (UTF-8, ISO-8859-1, etc.)
- Datums- und Zeitformat
- Zahlenformat (Dezimaltrennzeichen, Tausendertrennzeichen)
- Währungsformat
- Sortierreihenfolge
Häufige Anwendungsfälle
Aktuelle Einstellungen anzeigen
# Locale-Einstellungen anzeigen localectl # Nur Locale-Status localectl status
Ausgabe-Beispiel:
System Locale: LANG=de_DE.UTF-8
VC Keymap: de
X11 Layout: de
X11 Model: pc105
Verfügbare Locales anzeigen
# Alle installierten Locales localectl list-locales # Locales filtern localectl list-locales | grep de_ localectl list-locales | grep en_
Häufige Locales:
de_DE.UTF-8- Deutsch (Deutschland)en_US.UTF-8- Englisch (USA)en_GB.UTF-8- Englisch (Großbritannien)fr_FR.UTF-8- Französisch (Frankreich)
System-Locale setzen
Locale ändern
# System-Locale auf Deutsch setzen sudo localectl set-locale LANG=de_DE.UTF-8 # Auf Englisch (US) setzen sudo localectl set-locale LANG=en_US.UTF-8 # Mehrere Locale-Variablen setzen sudo localectl set-locale LANG=de_DE.UTF-8 \ LC_TIME=de_DE.UTF-8 \ LC_NUMERIC=en_US.UTF-8
Locale-Variablen
| Variable | Bedeutung | Beispiel |
|---|---|---|
| LANG | Standard-Locale für alle Kategorien | de_DE.UTF-8 |
| LC_TIME | Datums- und Zeitformat | de_DE.UTF-8 |
| LC_NUMERIC | Zahlenformat | en_US.UTF-8 |
| LC_MONETARY | Währungsformat | de_DE.UTF-8 |
| LC_MESSAGES | Systemmeldungen | en_US.UTF-8 |
| LC_COLLATE | Sortierreihenfolge | de_DE.UTF-8 |
| LC_CTYPE | Zeichenklassifizierung | de_DE.UTF-8 |
Tastaturlayout verwalten
Verfügbare Layouts anzeigen
# Alle verfügbaren Tastaturlayouts localectl list-keymaps # Deutsche Layouts filtern localectl list-keymaps | grep de # X11-Layouts localectl list-x11-keymap-layouts # X11-Varianten für ein Layout localectl list-x11-keymap-variants de
Konsolen-Tastatur setzen (Virtual Console)
# Deutsches Layout für Konsole sudo localectl set-keymap de # Schweizer Layout sudo localectl set-keymap ch # US-Layout sudo localectl set-keymap us
X11-Tastatur setzen (Grafische Oberfläche)
# Deutsches Layout für X11 sudo localectl set-x11-keymap de # Mit Variante (z.B. Deadkeys) sudo localectl set-x11-keymap de pc105 nodeadkeys # Schweizer Layout mit Variante sudo localectl set-x11-keymap ch pc105 # US-International sudo localectl set-x11-keymap us pc105 intl
Syntax:
localectl set-x11-keymap LAYOUT [MODEL] [VARIANT] [OPTIONS]
Praktische Beispiele
Komplett-Konfiguration für Deutschland
# Locale auf Deutsch setzen sudo localectl set-locale LANG=de_DE.UTF-8 # Deutsches Tastaturlayout (Konsole) sudo localectl set-keymap de # Deutsches Tastaturlayout (X11) sudo localectl set-x11-keymap de pc105 nodeadkeys # Prüfen localectl status
Server-Setup für Englisch mit deutscher Tastatur
# Systemmeldungen auf Englisch sudo localectl set-locale LANG=en_US.UTF-8 # Aber deutsche Tastatur sudo localectl set-keymap de sudo localectl set-x11-keymap de
Mehrsprachiges System
# Hauptsprache Deutsch, aber englische Zahlenformate sudo localectl set-locale \ LANG=de_DE.UTF-8 \ LC_NUMERIC=en_US.UTF-8 \ LC_MONETARY=de_DE.UTF-8 \ LC_TIME=de_DE.UTF-8
Locale-Pakete installieren
Debian/Ubuntu
# Locale-Paket installieren sudo apt update sudo apt install locales # Locales generieren sudo dpkg-reconfigure locales # Oder manuell: sudo locale-gen de_DE.UTF-8 sudo locale-gen en_US.UTF-8 # Locale-Cache aktualisieren sudo update-locale
RHEL/CentOS/Fedora
# Locale-Paket installieren sudo dnf install glibc-langpack-de sudo dnf install glibc-langpack-en # Oder alle Sprachen sudo dnf install glibc-all-langpacks
Konfigurationsdateien
/etc/locale.conf
Systemweite Locale-Einstellungen:
# Inhalt anzeigen cat /etc/locale.conf # Beispiel-Inhalt: LANG=de_DE.UTF-8 LC_TIME=de_DE.UTF-8
/etc/vconsole.conf
Konsolen-Tastaturlayout:
# Inhalt anzeigen cat /etc/vconsole.conf # Beispiel: KEYMAP=de FONT=eurlatgr
/etc/default/keyboard
X11-Tastaturlayout (Debian/Ubuntu):
# Inhalt anzeigen cat /etc/default/keyboard # Beispiel: XKBMODEL="pc105" XKBLAYOUT="de" XKBVARIANT="nodeadkeys" XKBOPTIONS=""
Benutzerspezifische Locale
Benutzer können eigene Locale-Einstellungen überschreiben:
# In ~/.bashrc oder ~/.profile export LANG=en_US.UTF-8 export LC_TIME=de_DE.UTF-8 # Oder temporär in aktueller Shell export LANG=en_US.UTF-8
Locale testen
# Aktuelle Locale-Einstellungen anzeigen locale # Alle Locale-Variablen locale -a # Datum im aktuellen Format date # Mit anderem Format testen LC_TIME=en_US.UTF-8 date LC_TIME=de_DE.UTF-8 date # Zahlenformat testen LC_NUMERIC=de_DE.UTF-8 printf "%'.2f\n" 1234567.89 LC_NUMERIC=en_US.UTF-8 printf "%'.2f\n" 1234567.89
Häufige Locale-Probleme beheben
Fehlende Locale-Warnung
# Warnung: "locale: Cannot set LC_ALL to default locale" # Lösung: Locale installieren und generieren sudo locale-gen de_DE.UTF-8 sudo update-locale LANG=de_DE.UTF-8 # Neu anmelden oder neu laden source /etc/default/locale
UTF-8 Zeichen werden nicht angezeigt
# Prüfen ob UTF-8 aktiv ist locale | grep UTF-8 # Auf UTF-8 umstellen sudo localectl set-locale LANG=de_DE.UTF-8 # Terminal-Font prüfen (bei SSH) echo $TERM
Tastaturlayout funktioniert nicht
# Konsole: Manuell testen sudo loadkeys de # X11: Temporär testen setxkbmap de # Permanent setzen sudo localectl set-keymap de sudo localectl set-x11-keymap de
Integration mit SSH
# SSH sendet Locale-Variablen # In /etc/ssh/sshd_config: AcceptEnv LANG LC_* # Client-seitig in ~/.ssh/config: SendEnv LANG LC_* # Oder SSH mit bestimmter Locale starten ssh -o "SendEnv LANG" user@server
Wichtige Hinweise
- Locale-Änderungen erfordern neue Login-Session (oder
source /etc/default/locale) - UTF-8 ist der empfohlene Zeichensatz für moderne Systeme
- Tastaturlayout-Änderungen wirken sofort
- SSH-Verbindungen können Client-Locale übertragen
- Nicht alle Locales sind standardmäßig installiert
Fehlerbehebung
Locale ist nicht verfügbar
# Prüfen ob Locale installiert ist locale -a | grep de_DE # Falls nicht, generieren sudo locale-gen de_DE.UTF-8 sudo dpkg-reconfigure locales
Falsche Sprache nach SSH-Login
# Server akzeptiert Client-Locale nicht # In /etc/ssh/sshd_config deaktivieren: # AcceptEnv LANG LC_* # Oder Client sendet keine Locale: # In ~/.ssh/config aktivieren: SendEnv LANG LC_*
Siehe auch
sammlung/localectl.txt · Zuletzt geändert: von 127.0.0.1
