не знайдено / не вдалося встановити локаль - що мені робити?


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.

Відповіді:


22

Здається, що не створюється локаль. Ви вибрали pl_PL.UTF-8правильно dpkg-reconfigure locales, натиснувши spaceу відповідному рядку?

Якщо так, рядок

pl_PL.UTF-8 UTF-8

in /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це так, або ваша система порушена.


1
Це працює! Вибране положення в /etc/locale.gen все ще коментувалося, не знаю чому (так, я пам’ятаю про пробіл) - можливо, щось не так із CHMOD. Спасибі!
luke_g

1
Зауважте, що -plowце за замовчуванням, тому його можна опустити. Вам потрібно лише зателефонувати dpkg-reconfigure, який зателефонує на локальний gen після того, як ви поставите галочку для потрібної записи.
Стефан Шазелас

@StephaneChazelas спасибі, я видалив його з відповіді та уточнив використання locale-gen.
jofel

Інша можливість полягає в тому, якщо ви налаштували свою систему тощо для 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, в чому полягає проблема. Потім знову налаштовує локалі.


Здається, це допомагає, але наступне apt-get dist-upgradeзнову порушить його.
закінчення

Навіщо це зламати? Тоді чи не повинні локалі бути сумісними з libc6, який використовується? Мій libc6 було змінено на використання іншої програми. Я повернув його до версії libc6 за замовчуванням, щоб моя система працювала належним чином. У цей момент він повинен бути дуже сумісним з apt-get dist-upgrade
tkjef

1
apt-get install localesВстановлено локалі на моєму DEBiAN контейнері Докер.
Стефан

7

Швидкий і простий спосіб (хоча це буде означати більше використовуваного диска, ніж інші):

apt install locales-all

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 або glibc-all-langpacks CentOS / Fedora

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


glibc-localeпакет не існує в Debian
Yajo

має бути локальним пакетом ... виправлено
Sérgio
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.