Ending this monologue.
I found out that LC_ALL has to be overwritten explicitly in /etc/env.d/02locale if it has been set once.
Steps to Reproduce:
1. Write some nonesense to LC_ALL
Code: Select all
# nano -w /etc/env.d/02locale
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="C"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="en_US.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"
LANG="de_DE.UTF-8"
LANGUAGE="de_DE:de:en_US:en"
LC_ALL="nonesense"
And look what you've done:
Code: Select all
# env-update
>>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# locale
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
LANG=de_DE.UTF-8
LC_CTYPE="nonesense"
LC_NUMERIC="nonesense"
LC_TIME="nonesense"
LC_COLLATE="nonesense"
LC_MONETARY="nonesense"
LC_MESSAGES="nonesense"
LC_PAPER="nonesense"
LC_NAME="nonesense"
LC_ADDRESS="nonesense"
LC_TELEPHONE="nonesense"
LC_MEASUREMENT="nonesense"
LC_IDENTIFICATION="nonesense"
LC_ALL=nonesense
2. Comment out the LC_ALL nonesense:
Code: Select all
# nano -w /etc/env.d/02locale
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="C"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="en_US.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"
LANG="de_DE.UTF-8"
LANGUAGE="de_DE:de:en_US:en"
#LC_ALL="nonesense"
And check that the problem remains:
Code: Select all
# env-update
>>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# locale
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
LANG=de_DE.UTF-8
LC_CTYPE="nonesense"
LC_NUMERIC="nonesense"
LC_TIME="nonesense"
LC_COLLATE="nonesense"
LC_MONETARY="nonesense"
LC_MESSAGES="nonesense"
LC_PAPER="nonesense"
LC_NAME="nonesense"
LC_ADDRESS="nonesense"
LC_TELEPHONE="nonesense"
LC_MEASUREMENT="nonesense"
LC_IDENTIFICATION="nonesense"
LC_ALL=nonesense
3. Now set LC_ALL to the empty string:
Code: Select all
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="C"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="en_US.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"
LANG="de_DE.UTF-8"
LANGUAGE="de_DE:de:en_US:en"
LC_ALL=""
And the problem is gone:
Code: Select all
# locale
LANG=de_DE.UTF-8
LC_CTYPE=de_DE.UTF-8
LC_NUMERIC=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
LC_COLLATE=C
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES=en_US.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=