локаль не найдена / настройка локали не удалась - что мне делать?

32

Я установил Debian 7 i386 на свой VPS (OpenVZ). Все отлично работает, кроме локалей - любая попытка установить что-либо показывает:

[...]
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
[...]

Что я пробовал:

  1. Сам генерирую локали - update-locale LC_ALL="pl_PL.UTF-8"- показывает: http://www.wklej.org/id/1248438/
  2. apt-get install --reinstall locales http://www.wklej.org/id/1248442/
  3. То же самое с dpkg-reconfigure localesустановкой + pl_PL.UTF-8, pl_PL.ISO-8859-2или даже en_US: http://www.wklej.org/id/1248446/
  4. export LC_ALL=pl_PL.UTF-8 (даже в корне):

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

Вот что показывает локаль:

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=

Ничего интересного не найдено в / var / log. Даже изменение репозитория на официальную + чистку и локализацию ручной установки не решает мою проблему, которая проявляется при каждой новой установке Debian 7.

luke_g
источник

Ответы:

22

Кажется, что никакой локали не генерируется. pl_PL.UTF-8Правильно ли вы выбрали dpkg-reconfigure locales, нажав spaceна соответствующую строку?

Если да, то строка

pl_PL.UTF-8 UTF-8

в /etc/locale.genне комментируется (= не начинается с #). Если вам нужно это исправить, вам также нужно запустить locale-genдля генерации локали. Его вывод должен быть:

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

Если он не выводит локали, которые вы хотите сгенерировать, похоже, что-то не так с вашей системой. Одной из причин может быть то, что вы localepurgeустановили. Если там нет файлов, /usr/share/locale/pl/LC_MESSAGESили /usr/share/locale/pl_PL/LC_MESSAGESэто так, или ваша система сломана.

jofel
источник
1
Оно работает! Выбранная позиция в /etc/locale.gen все еще комментируется, не знаю почему (да, я помню про пробел) - возможно, что-то не так с CHMOD. Благодарность!
luke_g
1
Обратите внимание, что -plowэто значение по умолчанию, поэтому может быть опущено. Вам нужно только позвонить dpkg-reconfigure, который вызовет locale-gen после того, как вы отметите нужную запись.
Стефан Шазелас
@ StephaneChazelas спасибо, я удалил его из ответа и разъяснил использование locale-gen.
Джофель
Еще одна возможность, если вы настроили свою систему и т. Д. Для en_US, но у вас /etc/locale.genесть только комментарий en_GB. Я заметил эту ошибку в этой теме здесь unix.stackexchange.com/q/287716/16920 Пожалуйста, добавьте ее и в стратегию устранения неполадок.
Лео Леопольд Герц 준영
12

первый:

sudo apt-get purge locales

тогда:

sudo aptitude install locales

и знаменитый:

sudo dpkg-reconfigure locales

Это освобождает систему локалей, затем переустанавливает локали и понижает libc6 с 2.19 до 2.13, что является проблемой. Затем снова настраивает локали.

tkjef
источник
Кажется, чтобы помочь, но следующий apt-get dist-upgradeсломает это снова.
ceving
Почему это сломало бы это? В этот момент не должны ли локали быть совместимыми с используемой libc6? Мой libc6 был изменен, чтобы использовать какую-то другую программу. Я снизил его до версии по умолчанию libc6, чтобы моя система работала правильно. В этот момент он должен быть очень совместим с apt-get dist-upgrade
tkjef
1
apt-get install localesУстановлен локали на моем DEBiAN контейнере Докер.
Стефан
7

Быстрый и простой способ (хотя это будет означать больше используемого диска, чем другие):

apt install locales-all
Yajo
источник
1

попробуйте запустить

locale -a

если ты получил

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

Решением для этой ситуации является установка языковых стандартов пакета (из пакета glibc [1]) в Debian flavor или glibc-all-langpacks CentOS / Fedora

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

Сержио
источник
glibc-localeпакет не существует в Debian
Yajo
должен быть языковой пакет ... исправлено
Sérgio