Perl warning Setting locale failed unter Debian
Bei automatisierten Installationen von Debian oder Ubuntu kommt es vor dass die locales nicht vollständig gesetzt sind. Bei der Installation von Perl Anwendungen (z.B. Nagios) kommt es dann zur Warnmeldung perl: warning: Setting locale failed.
Warnmeldung
Die Warnmeldung bei der Installation von Perl Anwendungen sieht wie folgt aus:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
Das Problem kann dabei auch auftreten, wenn Pakete nachinstalliert werden. Das folgende Beispiel zeigt einen entsprechenden Output:
8000050000:~# apt-get install multipath-tools Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: dmsetup kpartx libaio1 Suggested packages: multipath-tools-boot The following NEW packages will be installed: dmsetup kpartx libaio1 multipath-tools 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 266kB of archives. After this operation, 950kB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://ftp.de.debian.org lenny/main dmsetup 2:1.02.27-4 [39.7kB] Get:2 http://ftp.de.debian.org lenny/main kpartx 0.4.8-14+lenny2 [26.0kB] Get:3 http://ftp.de.debian.org lenny/main libaio1 0.3.107-3 [7414B] Get:4 http://ftp.de.debian.org lenny/main multipath-tools 0.4.8-14+lenny2 [193kB] Fetched 266kB in 1s (154kB/s) perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" 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 Selecting previously deselected package dmsetup. (Reading database ... 27499 files and directories currently installed.) Unpacking dmsetup (from .../dmsetup_2%3a1.02.27-4_amd64.deb) ... Selecting previously deselected package kpartx. Unpacking kpartx (from .../kpartx_0.4.8-14+lenny2_amd64.deb) ... Selecting previously deselected package libaio1. Unpacking libaio1 (from .../libaio1_0.3.107-3_amd64.deb) ... Selecting previously deselected package multipath-tools. Unpacking multipath-tools (from .../multipath-tools_0.4.8-14+lenny2_amd64.deb) ... Processing triggers for man-db ... perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). /usr/bin/mandb: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct manconv: can't set the locale; make sure $LC_* and $LANG are correct Setting up dmsetup (2:1.02.27-4) ... Setting up kpartx (0.4.8-14+lenny2) ... Setting up libaio1 (0.3.107-3) ... Setting up multipath-tools (0.4.8-14+lenny2) ... perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). Starting multipath daemon: multipathd. perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.utf8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). 8000050000:~#
Problemlösung
Zur Lösung des Problems können die Locale Einstellungen wie unten angeführt gesetzt werden. Falls das Problem nur per SSH auftritt, kann die Deaktivierung der SSH Client Option SendEnv LANG LC_* helfen.
Locales generieren
Fehlende locales werden über locale-gen
generiert:
locale-gen en_US.UTF-8
Alternativ kann eine Locale-Datei auch manuell erstellt werden:[1]
localedef -i en_US -f UTF-8 en_US.UTF-8
Locale Einstellungen setzen
Die locale Einstellungen können wie folgt gesetzt werden (im Beispiel auf en_US.UTF-8):
export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 locale-gen en_US.UTF-8 dpkg-reconfigure locales
Das Kommando dpkg-reconfigure locales
öffnet unter Debian einen Dialog zur Auswahl der gewünschten Locales. Unter Ubuntu erscheint dieser Dialog nicht, Informationen zu Ubuntu finden zeigt der Artikel Locales unter Ubuntu konfigurieren.
Hinweis: Von der Verwendung von LC_ALL wird dringend abgeraten, da es alle locale Variablen (bis auf LANGUAGE) überschreibt. Bitte verwenden Sie es nur zu Testzwecken und setzen Sie es niemals in eine Startdatei.[2]
SSH Client Option SendEnv LANG LC_* deaktivieren
Bei neueren Linux Distributionen ist in den SSH Client Optionen /etc/ssh/ssh_config die Option SendEnv LANG LC_*
aktiviert. Verbindet man sich von einem solchen Rechner zu einem Server, werden die Locale Einstellungen mit übergeben. Wenn man die betreffenden Locales am Server nicht nachinstallieren möchte, kann man diese Option in /etc/ssh/ssh_config auskommentieren.
Einzelnachweise
- ↑ UTF-8 - Finding or creating UTF-8 locales (wiki.gentoo.org)
- ↑ Locale (wiki.debian.org) Using LC_ALL is strongly discouraged as it overrides everything. Please use it only when testing and never set it in a startup file.
Autor: Werner Fischer Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.
|