Perl warning Setting locale failed unter Debian

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

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.

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. Preparing the locales (gentoo-wiki.info)


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Communications / Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxCon, OSDC, OSMC, LinuxTag u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

Linux Kernel unter Ubuntu oder Debian kompilieren
Mailinglisten unter Mailman erstellen
Vim Fehler "E319: Sorry, the command is not available in this version" beheben