Проблема не вдається встановити локаль; переконайтесь, що $ LC_ * та $ LANG правильні!


49

Коли я завжди намагаюся встановити новий пакет, я отримую це повідомлення:

Can't set locale; make sure $LC_* and $LANG are correct!
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en_GB:en",
    LC_ALL = (unset),
    LC_CTYPE = "en_GB.UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
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

Моя ОС - Debian Jessie 8.3 (Mate), що використовує англійську мову з французькою клавіатурою. Коли я набираю локаль, я отримую таке:

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

Відповіді:


62

Debian відправляє локалі у вихідній формі. Їх потрібно скласти чітко. Причиною цього є те, що складені локалі використовують набагато більше місця на диску, але більшість людей використовують лише декілька з них.

Запустіть dpkg-reconfigure localesяк корінь, виберіть у списку потрібні локалі (з вашими налаштуваннями вам потрібно en_GBі en_US.UTF-8- рекомендую вибрати, en_USа en_GB.UTF-8також) і натисніть <OK>.

Крім того, редагуйте /etc/locale.gen, коментуйте рядки для потрібних локалів та запускайте locale-genяк root.

(Примітка: в Ubuntu це працює інакше: запустіть locale-genз локалями, які ви хочете генерувати як аргументи, наприклад sudo locale-gen en_GB en_US en_GB.UTF-8 en_US.UTF-8.)

Крім того, Debian тепер має пакет, locales-allякий ви можете встановити замість locales. У ньому є всі попередньо створені локалі. Мінусом є те, що вони використовують більше дискового простору (112 Мб проти 16 МБ).


1
Це спрацювало, але лише після того, як я вийшов із системи, а потім знову увійшов.
Форівін

Працювали і для мене!
Джеймі Іванов

редагування /etc/locale.gendoes't зробив роботу для мене (зробив вихід з системи / Логіна), але locale-genвирішити мою tmux: need UTF-8 locale (LC_CTYPE)проблему наDebian 4.9.82
ЕА

2
@eapo Як я заявляю у своїй відповіді, вам потрібно відредагувати /etc/locale.gen та запустити locale-gen.
Жил "ТАК - перестань бути злим"

Я пропустив трохи про ввімкнення en_US.UTF-8, а також вашого власного мови. Я виявив важкий шлях, а потім попрямував сюди, щоб зробити свою власну відповідь, перш ніж усвідомлювати, що це був тут весь час.
Аластер Маккормак

19

Рішення з найкращим рейтингом не допомогло в моєму випадку, тому я використав це:

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales

Після цього я вийшов із системи та ввійшов, і помилка відсутня.


2
Використання LC_ALL сильно не рекомендується, оскільки це перекриває все. Будь ласка, використовуйте його лише під час тестування і ніколи не встановлюйте його у файл запуску. відповідно до: wiki.debian.org/Locale
Pitone Maledetto

6

Ці команди врятували мені життя

# echo "LC_ALL=en_US.UTF-8" >> /etc/environment
# echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
# echo "LANG=en_US.UTF-8" > /etc/locale.conf
# locale-gen en_US.UTF-8

6

Якщо у вас виникає ця проблема на малиновому пі (або іншому?), І ви отримуєте помилку, коли ви сш на пі, є ще 2 рішення

Один - це редагувати /etc/ssh/sshd_configпі та коментувати рядок

AcceptEnv LANG LC_*

наприклад sudo nano /etc/ssh/sshd_config

Після цього слід перезапустити ssh-сервер

sudo systemctl restart ssh

Інший - на вашому клієнтському апараті ( не пі ) редагувати /etc/ssh/ssh_config(інший шлях зверху) та коментувати рядок

SendEnv LANG LC_*

І те й інше не коментується, але проблема все ще виникає. (RPi3, macOS10.14)
jorijnsmit

Відповів з лінії в даний час. Насправді у вас немає можливості протестувати, але таким чином звучить більш логічно ... Дякую.
jorijnsmit

2

Потрібно встановити пакет locales(або locales-allлокаль en_GB, залежно від версії Debian).

Обхідний не мати таких помилок: встановити LANG=Cв корінь, так що він не буде використовувати НЕ локалі.

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