Perl warning Setting locale failed unter Debian

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

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

  1. UTF-8 - Finding or creating UTF-8 locales (wiki.gentoo.org)
  2. 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.


Foto Werner Fischer.jpg

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.


Das könnte Sie auch interessieren

Debian 11 Installation bei Fehlermeldung DMAR DRHD handling fault status reg 3
Festplatte formatieren / partitionieren und mounten unter Debian Linux
Raspi-firmware: missing /boot/firmware, did you forget to mount it