Menu Close

Deutsche Locale in Ubuntu nicht richtig gesetzt

Locales werden unter Linux benutzt, um die Systemsprache, sowie weitere Eigenschaften festzulegen. Zudem werden auch Zahlenformate und Zeichensätze durch die Locale bestimmt. Seit einem Update meiner Ubuntu-VM wird eine Fehlermeldung bei Aktualisierungen und Installationen von Paketen geworfen. In diesem Beitrag beschreibe ich, wie das Problem durch das manuelle Setzen der Locale behoben werden kann.


Symptom

Bei der Installation, Aktualisierung und Deinstallation von Paketen über apt-get werden konstant die folgenden Fehlermeldungen geworfen.

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Problem

Während meiner Recherche bin ich auf unterschiedlichste Begründungen gestoßen, deren Ursachen jedoch nicht eindeutig auf das von mir betriebene System zutreffen. Lasse ich mir die Locale mittels locale ausgeben, erhalte ich folgende Ausgabe.

# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES="en_US.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=

An dieser Stelle ist auffällig, dass sowohl deutsche und englische Parameter gesetzt sind. Für eine qualifizierte Fehlerdiagnose fehlen mir fundierte Kenntnisse bezüglich Linux. Versuche ich die Locale mittels update-locale LANG=de_DE.UTF-8 zu setzen, erhalte ich erneut die vorherigen Fehlermeldungen. An diesem Punkt schlussfolgere ich für mein Problem, dass die deutsche Locale in irgendeiner Form fehlerhaft ist.

Lösungsstrategie

Locales generieren

In einem Beitrag wird zu der Problematik einer fehlerhaften Locale empfohlen, sie neu zu generieren und im Anschluss zu rekonfigurieren.

# sudo locale-gen de_DE.UTF-8
Generating locales...
  de_DE.UTF-8... up-to-date
Generation complete.

# sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_PAPER = "de_DE.UTF-8",
        LC_ADDRESS = "de_DE.UTF-8",
        LC_MONETARY = "de_DE.UTF-8",
        LC_NUMERIC = "de_DE.UTF-8",
        LC_TELEPHONE = "de_DE.UTF-8",
        LC_IDENTIFICATION = "de_DE.UTF-8",
        LC_MEASUREMENT = "de_DE.UTF-8",
        LC_TIME = "de_DE.UTF-8",
        LC_NAME = "de_DE.UTF-8",
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales...
  de_DE.UTF-8... up-to-date
Generation complete.

Auch während der Rekonfiguration sind die Fehlermeldungen präsent. Eine erneute Durchführung des Befehls dpkg-reconfigure bewirkt keine Änderung an der Ausgabe bzw. Problematik. An dieser Stelle bin ich am Überlegen, ob das Problem generell im Zusammenhang mit der deutschen Locale begraben liegt. Als Alternativlösung versuche ich mir stattdessen die englische Locale zu erzeugen und im Anschluss dpkg-reconfigure durchzuführen.

# sudo locale-gen en_US.UTF-8
Generating locales...
  en_US.UTF-8... done
Generation complete.

# sudo dpkg-reconfigure locales
Generating locales...
  de_DE.UTF-8... done
  en_US.UTF-8... up-to-date
Generation complete.

Die Rekonfiguration verläuft erfolgreich. Ich versuche zunächst die deutsche Locale zu setzen und überprüfe danach die Einstellungen.

# update-locale LANG=de_DE.UTF-8

# locale
LANG=de_DE.UTF-8
LANGUAGE=
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=

Die Ausgabe von locale stimmt nun mit meinen Erwartungen überein und es werden keine Fehlermeldungen mehr ausgegeben. Das Problem scheint somit vorerst gelöst zu sein.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.

Index