Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

Locale-Fehler bei JiffyBox unter Ubuntu 10.4

Ich finde die JiffyBox von DomainFactory ja klasse (war auch Thema meines ersten Blogartikels). Damit kann man eben schnell einen kostengünstigen Server aufsetzen und einige Sachen ausprobieren. Falls dann etwas schief geht, wirft man die ganze Installation weg und startet mal eben einen neuen Server – alles innerhalb weniger Minuten.

Jetzt bin ich allerdings auf ein Problem gestoßen, das ich vor Monaten nach meiner Meinung nicht hatte. Ich möchte nämlich eigentlich einen neuen Server mit ‚Ubuntu 10.04 LTS 64Bit‘ (Lucid) und PostgreSQL aufsetzen. Das klappte nach einigen Warnungen nicht und letztlich lag es an fehlerhaften Locale-Einstellungen, wie es auch in diesem Link beschrieben wird. Hätte die angegebene Lösung sofort bei mir geklappt, wäre dieser Artikel wahrscheinlich nicht entstanden.

Um das Problem nachzustellen, muss man nicht gleich PostgreSQL installieren, sondern man kann auf dem frisch gestarteten System auch einfach mal einen neuen Benutzer anlegen: adduser myuser

root@j24664:~# adduser myuser
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = "UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").


Perl meckert ein bisschen, weil ein paar Locale-Einstellungen fehlen. Die Warnungen sollte man auch nicht ignorieren, weil man dann sicherlich später auf Probleme stoßen wird (z.B. mit PostgreSQL). Wenn man sich mit dem Befehl locale die vorhandenen Einträge anzeigen lässt, ist LANGUAGE und LC_ALLnicht gesetzt und es erscheinen noch Hinweise:

root@j24661:~# locale
locale: Cannot set LC_CTYPE 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
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Eine Suche im Internet führt zu vielen Treffern und Lösungsmöglichkeiten – hier einige:

Die Lösungen waren offensichtlich für viele Leute hilfreich. Bei mir klappte das allerdings nicht vollständig. Jetzt folgt eine funktionierende Anleitung für die JiffyBox, die ich bestimmt auch noch öfter als Gedächtnisstütze nutzen werde 😉

Nach der Suche im Internet und etwas ausprobieren stand mein Ziel schon mal fest. Wenn beim Aufruf von locale die beiden Einträge LANGUAGE und LC_ALL gesetzt sind, dann gibt Perl auch keine Warnungen mehr aus:

root@j24661:~# locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
root@j24661:~# adduser myuser
Adding user `myuser' ...
...

Die fehlenden Einstellungen kann man einfach mit export setzen. Ist damit das Problem gelöst? Fast, denn damit können wir in der aktuellen Session arbeiten, aber die Einstellungen werden für nachfolgende Sessions verworfen. In den Foren habe ich die folgenden Befehle gefunden, mit denen die Einträge dann eigentlich auch für folgende Sessions erhalten bleiben sollten:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

Wenn ich die Befehle allerdings so durchgeführt hatte, klappte alles in der aktuellen Session, aber nach erneutem Anmelden war alles wieder beim Alten. Also muss man wohl in den Konfigurationsdateien händisch eingreifen. Dafür gibt es die Datei ‚/etc/default/locale‚, in der man die Einträge ergänzen kann. Die zweite und dritte Zeile habe ich hinzugefügt:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_ALL=en_US.UTF-8

Einen passenden Hinweis habe ich von Herrn Krenn noch gefunden http://www.thomas-krenn.com/de/wiki/Locales_unter_Ubuntu_konfigurieren#Locales_anpassen. Und zwar kann man mit dem Befehl update-locale die Einträge generieren lassen. Auf der Konsole sind also nur folgende Befehle einzugeben:

update-locale LANGUAGE=en_US.UTF-8
update-locale LC_ALL=en_US.UTF-8

Ich werde also zukünftig nur einmal die zwei Befehle ausführen müssen, damit nach jedem Anmelden die Locales korrekt gesetzt sind. Eine weitere Lösung zu den vielen anderen Lösungen im Netz ;-).

0 Kommentare

  1. Auf meinem Mac OS Lion hatte ich gerade ein ähnliches Problem. Dort musste ich für meine deutschen Einstellungen folgende Einträge in der Datei ‚.bashrc‘ ergänzen:

    export LC_CTYPE=de_DE.UTF-8
    export LC_ALL=de_DE.UTF-8