locale not found / setting locale failed - co powinienem zrobić?

32

Zainstalowałem Debian 7 i386 na moim VPS (OpenVZ). Wszystko działa dobrze, z wyjątkiem ustawień regionalnych - każda próba zainstalowania czegokolwiek pokazuje:

[...]
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "pl_PL.UTF-8"
    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
[...]

Co próbowałem:

  1. Generowanie ustawień narodowych - update-locale LC_ALL="pl_PL.UTF-8"- pokazuje: http://www.wklej.org/id/1248438/
  2. apt-get install --reinstall locales http://www.wklej.org/id/1248442/
  3. To samo z dpkg-reconfigure localesustawieniem + pl_PL.UTF-8, pl_PL.ISO-8859-2a nawet en_US: http://www.wklej.org/id/1248446/
  4. export LC_ALL=pl_PL.UTF-8 (nawet na rootie):

    -bash: warning: setlocale: LC_ALL: cannot change locale (pl_PL.UTF-8)
    

Oto, co pokazuje ustawienia regionalne:

root:~# 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=pl_PL.UTF-8
LANGUAGE=
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=

Nic ciekawego nie znaleziono w / var / log. Nawet zmiana repo na oficjalne + czyszczenie i ustawienia ręczne instalacji nie rozwiązuje mojego problemu, który przejawia się przy każdej nowej instalacji Debiana 7.

luke_g
źródło

Odpowiedzi:

22

Wygląda na to, że nie są generowane ustawienia narodowe. Czy dokonałeś pl_PL.UTF-8właściwego wyboru dpkg-reconfigure locales, naciskając spaceodpowiedni wiersz?

Jeśli tak, linia

pl_PL.UTF-8 UTF-8

in /etc/locale.gennie jest komentowane (= nie zaczyna się od #). Jeśli musisz to naprawić, musisz także uruchomić, locale-genaby wygenerować ustawienia narodowe. Jego wynik powinien wynosić:

Generating locales (this might take a while)...
   pl_PL.UTF-8... done
Generation complete.

Jeśli nie wyprowadza ustawień narodowych, które chcesz wygenerować, oznacza to, że coś jest nie tak z twoim systemem. Jednym z powodów może być localepurgeinstalacja. Jeśli nie ma żadnych plików /usr/share/locale/pl/LC_MESSAGESlub /usr/share/locale/pl_PL/LC_MESSAGEStak jest, lub system jest uszkodzony.

Jofel
źródło
1
To działa! Wybrana pozycja w /etc/locale.gen była nadal komentowana, nie wiem dlaczego (tak, pamiętam o spacji) - może coś jest nie tak z CHMOD. Dzięki!
luke_g
1
Pamiętaj, że -plowjest to ustawienie domyślne, więc można je pominąć. Wystarczy zadzwonić dpkg-reconfigure, który zadzwoni do locale-gen po zaznaczeniu żądanego wpisu.
Stéphane Chazelas
@StephaneChazelas dzięki, usunąłem go z odpowiedzi i wyjaśniłem użycie locale-gen.
jofel
Inna możliwość jest taka, jeśli skonfigurowałeś swój system itp. Dla en_US, ale /etc/locale.gennie skomentowałeś go en_GB. Zauważyłem ten błąd w tym wątku tutaj unix.stackexchange.com/q/287716/16920 Proszę również dodać go do strategii rozwiązywania problemów.
Léo Léopold Hertz
12

pierwszy:

sudo apt-get purge locales

następnie:

sudo aptitude install locales

i słynny:

sudo dpkg-reconfigure locales

Spowoduje to usunięcie systemu ustawień regionalnych, a następnie ponowne zainstalowanie ustawień regionalnych i obniżenie poziomu libc6 z 2.19 do 2.13, co jest problemem. Następnie ponownie konfiguruje ustawienia narodowe.

tkjef
źródło
Wydaje się, że to pomoże, ale następny apt-get dist-upgradego znowu zepsuje.
ceving
Dlaczego miałby to złamać? W tym momencie ustawienia regionalne nie powinny być kompatybilne z używanym libc6? Mój libc6 został zmieniony na inny program. Znowu obniżyłem go do domyślnej wersji libc6, aby mój system działał poprawnie. W tym momencie powinien być bardzo kompatybilny z apt-get dist-upgrade
tkjef
1
apt-get install localesZainstalowane lokalizacje na moim debian pojemnika Docker.
Stephane,
7

Szybki i łatwy sposób (choć będzie to oznaczać więcej dysku używanego niż inne):

apt install locales-all
Yajo
źródło
1

spróbuj uruchomić

locale -a

Jeśli masz

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

Rozwiązaniem tej sytuacji jest zainstalowanie ustawień regionalnych pakietu (z pakietu glibc [1]) w wersji debian lub glibc-all-langpacks CentOS / Fedora

[1] https://tracker.debian.org/pkg/glibc

Sérgio
źródło
glibc-localepakiet nie istnieje w Debianie
Yajo
powinien być locale pakietu ... naprawione
Sérgio