Проблема Не могу установить локаль; убедитесь, что $ 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с правами root, выберите желаемые локали в списке (с вашими настройками, которые вам нужны 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.genне помогло мне (сделал выход / вход), но locale-genрешило мою tmux: need UTF-8 locale (LC_CTYPE)проблемуDebian 4.9.82
eapo
2
@eapo Как я заявляю в своем ответе, вам нужно отредактировать, /etc/locale.gen а затем запустить locale-gen.
Жиль "ТАК - перестань быть злым"
Я пропустил немного о включении, en_US.UTF-8а также о вашей собственной локали. Я нашел трудный путь, а затем вернулся сюда, чтобы составить свой собственный ответ, прежде чем понял, что он был здесь все время.
Аластер МакКормак
19

Решение с самым высоким рейтингом не помогло в моем случае, поэтому я использовал это:

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

После этого я вышел из системы и вошел, и ошибка пропала.

ssasa
источник
2
Использование LC_ALL настоятельно не рекомендуется, так как оно отменяет все. Пожалуйста, используйте его только при тестировании и никогда не устанавливайте его в файле запуска. согласно: wiki.debian.org/Locale
Питоне Маледетто
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

Если у вас есть эта проблема на Raspberry Pi (или другой?), И вы получаете сообщение об ошибке, когда вы ssh к пи, есть 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_*
GMan
источник
Оба из них не прокомментированы для меня, но проблема все еще возникает. (RPi3, macOS10.14)
jorijnsmit
Ответил из линии в настоящее время. На самом деле у меня нет возможности тестировать, но звучит более логично ... Спасибо.
jorijnsmit
2

Вам необходимо установить пакет locales( locales-allили локаль en_GB, в зависимости от имеющейся версии Debian).

Обходной не иметь таких ошибок: установить LANG=Cв корень, так что он не будет использовать не локали.

Джакомо Катенацци
источник