# [S]LC_ALL is set to a locale with a charmap other than UTF-8

## kalleda

Hallo,

seit geraumer Zeit bekomme ich beim emergen von Paketen, welche eine Abhängigkeit von Python haben, folgende Warnung:

```
LC_ALL is set to a locale with a charmap other than UTF-8.

This may trigger build failures in some python packages.
```

Leider konnte ich bisher hierfür nicht mal einen Lösungsansatz finden, trotz intensiver Suche. Hat noch jemand dieses Problem?

Hier mal noch einige meiner Einstellungen:

```

linuxpc ~ # locale

LANG=de_DE.utf8

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=de_DE.UTF-8
```

```

linuxpc ~ # locale -a

C

de_DE

de_DE@euro

de_DE.iso88591

de_DE.iso885915@euro

de_DE.utf8

deutsch

en_US

en_US.iso88591

en_US.utf8

german

POSIX
```

```
linuxpc ~ # cat /etc/locale.gen 

en_US ISO-8859-1

en_US.UTF-8 UTF-8

de_DE ISO-8859-1

de_DE@euro ISO-8859-15

de_DE.UTF-8 UTF-8
```

```
linuxpc ~ # eselect locale list

Available targets for the LANG variable:

  [1]   C

  [2]   de_DE

  [3]   de_DE@euro

  [4]   de_DE.iso88591

  [5]   de_DE.iso885915@euro

  [6]   de_DE.utf8 *

  [7]   deutsch

  [8]   en_US

  [9]   en_US.iso88591

  [10]  en_US.utf8

  [11]  german

  [12]  POSIX

  [ ]   (free form)
```

und zum Schluss noch:

```
linuxpc ~ # locale charmap

UTF-8
```

Ich finde im Netz verschiedene Schreibweisen in den Dateien: mal utf8 und mal UTF-8. So richtig brachte mich aber nichts weiter.

Gruß und Danke im Voraus!Last edited by kalleda on Sun Oct 12, 2014 11:19 am; edited 1 time in total

----------

## Jean-Paul

http://wiki.gentoo.org/wiki/Localization/HOWTO/de

LC_ALL sollte nicht gesetzt sein

 *Quote:*   

> Warning
> 
> Using LC_ALL is strongly discouraged as it can't be overridden later on. Please use it only when testing and never set it in a startup file.

 

----------

## kurisu

Sehr richtig. Definiere die Variablen am besten systemweit in /etc/env.d/02locale, z.B. folgendermaßen:

```
LANG="de_DE.UTF-8"

LC_COLLATE="C"
```

und prüfe, ob es daran liegt.

Edit:

Mir fällt erst jetzt auf, dass du enorm viele, redundant anmutende Locales generiert hast. Hier zu entschlacken wäre sicher eine gute Idee.

Auf meinem Desktop hier etwa gibt:

```
locale -a
```

schlicht dies aus:

```
C

POSIX

de_DE.utf8

en_US.utf8

ja_JP.utf8

```

Für jede Sprache jeweils einzig die UTF-8-Kandidaten.

----------

## kalleda

Erstmal vielen Dank für eure Antworten!

Habe das jetzt mal wie empfohlen geändert:

```
linuxpc ~ # locale

LANG=de_DE.utf8

LC_CTYPE="de_DE.utf8"

LC_NUMERIC="de_DE.utf8"

LC_TIME="de_DE.utf8"

LC_COLLATE=C

LC_MONETARY="de_DE.utf8"

LC_MESSAGES=de_DE.UTF-8

LC_PAPER="de_DE.utf8"

LC_NAME="de_DE.utf8"

LC_ADDRESS="de_DE.utf8"

LC_TELEPHONE="de_DE.utf8"

LC_MEASUREMENT="de_DE.utf8"

LC_IDENTIFICATION="de_DE.utf8"

LC_ALL=
```

und

```
linuxpc ~ # locale -a

C

POSIX

de_DE.utf8
```

trotzdem kommt weiterhin

```
WARN: configure

LC_ALL is set to a locale with a charmap other than UTF-8.

This may trigger build failures in some python packages.
```

Irgendwie finde ich nur sehr wenig im Internet hierzu. Hier ist der Patch, welcher für diese Ausgabe wohl zuständig ist. Was der aber genau macht kann ich nicht nachvollziehen:

https://www.mail-archive.com/gentoo-python@lists.gentoo.org/msg00009.html

Gruss

----------

## kurisu

Auffällig ist die nicht einheitliche Schreibweise: nicht konsequent entweder *.utf8 oder aber *.UTF-8, sondern ein Gemisch.

Bei mir sieht das so aus:

```
# locale

LANG=de_DE.utf8

LC_CTYPE="de_DE.utf8"

LC_NUMERIC="de_DE.utf8"

LC_TIME="de_DE.utf8"

LC_COLLATE=C

LC_MONETARY="de_DE.utf8"

LC_MESSAGES="de_DE.utf8"

LC_PAPER="de_DE.utf8"

LC_NAME="de_DE.utf8"

LC_ADDRESS="de_DE.utf8"

LC_TELEPHONE="de_DE.utf8"

LC_MEASUREMENT="de_DE.utf8"

LC_IDENTIFICATION="de_DE.utf8"

LC_ALL=
```

Auch in /etc/env.d/02locale steht bei mir:

```
# cat /etc/env.d/02locale

LANG="de_DE.utf8"

LC_COLLATE="C"
```

und nicht die Variante mit *.UTF-8 wie im oben von Jean Paul verlinkten sowie zuletzt von mir zitierten Wiki-Eintrag.

----------

## kalleda

Ob beim Aufruf von locale in jeder Zeile utf8 oder UTF-8 steht liegt an der Angabe in /etc/env.d/02locale. Die Schreibweise wird übernommen - so viel hab ich durch's Probieren schon mal heraus bekommen. Leider sind hierzu auch die Angaben im Internet nicht eindeutig.

Was mir an meinem Rechner aber noch aufgefallen ist:

Die Ausgabe von locale schreibt LC_MESSAGES im Gegensatz zu den anderen _ohne_ Anführungszeichen und immer mit UTF-8; die Schreibweise in /etc/env.d/02locale wird ignoriert (siehe meinen letzten Post). Im Netz finde ich nur einheutliche Schreibweisen in utf8 oder UTF-8 sowie alle mit oder ohne Anführungszeichen. Doch das kann auch nicht der wahre oder alleinige Grund sein, denn:

(und jetzt wird es noch unübersichtlicher)

Der Rechner mit Warnmeldung ist ein amd64. Die Meldung erscheint bei jeder erdenklichen Kombination, die ich ausprobierte. Mein altes Notebook, ein x86, bringt bei jeder identischen Konfiguration zum amd64 keine Warnmeldung, obwohl die Ausgaben von locale identisch ist.

Bin schlichtweg ratlos  :Confused: 

----------

## kurisu

 *kalleda wrote:*   

> Ob beim Aufruf von locale in jeder Zeile utf8 oder UTF-8 steht liegt an der Angabe in /etc/env.d/02locale.

 

Das ist völlig klar. Nachdem nun weder das Entschlacken überschüssiger Locales, noch der Versuch nach einheitlicher Schreibweise Abhilfe schaffen konnte, vor allem aber auch nicht die Maßnahme zielführend war, LC_ALL fortan undefiniert zu lassen, habe ich hierzu einstweilen auch keine Idee mehr. Ich gehe davon aus, dass du inmitten der Schritte jeweils  env-update respektive  reboot ausgeführt hast. Du schreibst, dass LC_MESSAGES offenbar unberührt bleibt von der Definition in /etc/env.d/02locale. Das ist höchst eigenartig. Im Grunde bleibt da nur etwas von der Sorte ~/.bashrc, ~/.xinitrc oder aber irgendeine unorthodoxe oder verwaiste Datei, die ebendies fabriziert.

----------

## Josef.95

 *kurisu wrote:*   

> [...]
> 
> Im Grunde bleibt da nur etwas von der Sorte ~/.bashrc, ~/.xinitrc oder aber irgendeine unorthodoxe oder verwaiste Datei, die ebendies fabriziert.

 

Jup, die 

```
 * Messages for package app-portage/layman-2.2.0:

...

 * LC_ALL is set to a locale with a charmap other than UTF-8.

 * This may trigger build failures in some python packages.
```

Warnung verschwand hier nachdem ein alter vergessener Eintrag aus der /etc/portage/bashrc entfernt wurde.

thx :)

----------

## kurisu

 *Josef.95 wrote:*   

>  *kurisu wrote:*   [...]
> 
> Im Grunde bleibt da nur etwas von der Sorte ~/.bashrc, ~/.xinitrc oder aber irgendeine unorthodoxe oder verwaiste Datei, die ebendies fabriziert. 
> 
> Jup, die 
> ...

 

Schön, dass ich unerwartet anderenorts helfen konnte. In diesem Sinne bleibt OP nur anzuraten, auch einen Blick auf die globale Konfiguration in /etc zu werfen.

----------

## kalleda

Entschuldigt bitte die verspätete Antwort - ich war ein paar Tage weg und der Rechner aus  :Wink: 

Vielen Dank für Eure Beitrage.

Nachdem ich gefühle 20 mal alle mir bekannten bashrc, profile und xinitrc nach dem Post von Josef.95 durchgeschaut hatte brachte der letzte Post von kurisu die Lösung. Mir war bisher völlig entgangen, dass es eine /etc/portage/bashrc überhaupt gibt  :Rolling Eyes: 

Diese fehlt auch auf dem x86, welcher die Meldung nicht brachte. Wird die Datei überhaupt noch gebraucht?

Gruss und Dank!

----------

## kurisu

Super, dass das nun gelöst ist. Zu /etc/portage/bashrc kann ich nur sagen, dass diese Datei auf keinem meiner Gentoo-Systeme existiert. Allerdings sind das alles schon ältere, gleichwohl uptodate Installationen. Spekulativ kann ich hier nur mutmaßen, dass diese Datei inzwischen bei Neuinstallationen angelegt wird. Gegebenenfalls mag dies aber auch auf irgendein installiertes Programm zurückzuführen sein.

----------

