Вопрос Как исправить мою проблему с локалью?


Я получаю это сообщение каждый раз, когда я делаю что-то вроде запуска или остановки службы.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.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_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   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
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   

Как исправить эту ошибку?


463
2017-07-11 14:08


происхождения


Связанный: Как установить локаль? - Lucio
возможный дубликат Локальные переменные не действуют в удаленной оболочке (perl: warning: Ошибка установки локали). - Denilson Sá Maia
Простое и постоянное исправление для всех пользователей: askubuntu.com/questions/881742/... - Galvani


ответы:


Первый забег locale чтобы указать, какие локали определены для текущей учетной записи пользователя:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

Затем создайте отсутствующий локаль и перенастройте локали, чтобы заметить:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

Теперь вы больше не увидите никаких ошибок!


471
2017-12-10 12:45



не работал для меня - Umair
Это сработало для меня в ряде систем. Есть ли способ избежать этой проблемы для вновь установленных систем? - Brylie Christopher Oxley
@UmairAyub может быть, у вас есть несколько неясных локалей, попробуйте это: для y в $ (locale | cut -d '=' -f 2 | sort | uniq); do locale-gen $ y; сделанный Он будет генерировать локаль для каждого определения, которое у вас есть. - Ivan Buttinoni
Локаль в locale-gen команда должна быть в двойных кавычках для правильной работы: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
@Umair В этой проблеме существует высокий риск человеческой ошибки. Ваша система настроена на en_GB по умолчанию, но вы установите его для en_US, Вы должны вручную комментировать en_GB и раскомментирование en_US в /etc/locale.gen, См. Мой ответ askubuntu.com/a/790373/25388 в аппаратной малине Pi 3b и системе Raspbian Jessie. - Léo Léopold Hertz 준영


Ничего не предлагалось выше в моем случае (Ubuntu Server 12.04LTS). Что наконец помогло помещал в файл /etc/environment:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

По какой-то причине его не хватало. Выходы для локали и других команд выглядели так, как будто они были правильно определены. Другими словами, не считайте само собой разумеющимся, все основные вещи объявляются там, где они должны быть объявлены.


340
2017-12-16 04:11



Да, никто другой не работал, кроме этого, возможно, из-за обновленной версии. Но я предпочитаю /etc/default/locale, - Naveed
обновленный /etc/default/locale и больше никаких предупреждений. благодаря - ohho
Да, другие не работали для меня. Это было сделано. Вот однострочный я использовал для автоматического обновления этого. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 ваше решение неверно, потому что оно добавляет (вместо перезаписи), это не рекомендуемый файл, и echo должен выполняться с включенной интерпретацией экранов обратного слэша. Это то же самое, что и у вас, но с вышеупомянутым исправленным: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
НЕ ЗАБЫВАЙТЕ ЛОГОТИП И РЕАГИРОВАТЬ! - S.M.Mousavi


Они должны исчезнуть после выпуска:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigure реконфигурирует пакеты после того, как они уже были        установлен. Передайте им имена пакета или пакетов для перенастройки.        Он будет задавать вопросы конфигурации, как если бы пакет был        первый установлен.


140
2017-07-11 14:19



Я рад, что мои проблемы год назад помогли вам понять это;) - Rinzwind
Не следует ли генерировать этот локаль по умолчанию? Я имею в виду en, en_AU, en_CA, en_GB присутствуют по умолчанию, но не en_US? - Daniel Serodio
@Rinzwind Большое спасибо за ваши усилия! Я действительно сожалею; Я должен был сформулировать свой вопрос лучше. Я хотел спросить: почему необходимо перенастроить пакет локалей после создания новых локалей? Мне кажется, что локали работают даже без dpkg-reconfigure, - Victor
Использование Ubuntu 14.04 в контейнере Docker, поэтому ничего не было установлено. Джанго makemessage это нужно. Это сработало отлично! Благодарю. - Justin
Я считаю, что sudo пропал, отсутствует. Возможно, это должно быть: sudo dpkg-reconfigure locales, Это работало для меня после новой установки Ubunty 14.10 Desktop 64-bit. - bgoodr


Просто добавьте следующее к своему .bashrc файл (если вы используете bash)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



Это сладкое исправление работало для меня на моем изображении Amazon-EC2 (работало по умолчанию RHEL AMI) Большое спасибо! :) - gideon
Это работало для меня с моим образцом Digitalocean Ubuntu 12.04. - Inan Berbatov
это исправило мою проблему. Я должен задать вопрос: почему LC_ALL не был установлен командой locale-gen в качестве других ответов, упомянутых выше этого? - alexserver
Странно, все решения выше не работали для меня, но это было сделано! После экспорта LC_ALL Я мог бы наконец использовать sudo dpkg-reconfigure locales, - sobi3ch
наконец, пробовав много трюков, это работает для меня на kubuntu 14.04.3 lts. благодаря! - Jonas


Это распространенная проблема, если вы подключаетесь удаленно, поэтому решение не должно пересылать ваш язык. редактировать /etc/ssh/ssh_config и прокомментировать SendEnv LANG LC_* линия.


88
2017-10-01 00:45



Я пробовал другие ответы, но забыл, что я подключался удаленно, пока не увидел ваш ответ. Проблема связана с разными локалями на сервере и клиенте ssh. - Hieu
В OSX (подключение к ubuntu) он находится на /etc/ssh_config - Michiel de Mare
Однострочный: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (полезно для подготовки сервера) - Albin
Я не мог установить LC_ALL на локальном компьютере, но он исправил мою проблему с удаленным сервером, спасибо. - Alexander Shlenchack
Возможно, стоит отметить, что вам нужно отредактировать файл на локальном компьютере, а не удаленном. - Clashsoft


Для этого есть команда:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

Он обновляет /etc/default/locale с предоставленными значениями.


63
2017-08-01 11:51



Это законно! Не забудьте выпустить / перезагрузить оболочку, иначе вы не увидите изменений. Не забудьте проверить одобренный ответ для создания и реконфигурации локалей. - Erik Zivkovic
Бег locale все еще не показывает никаких значений utf. - Cerin
@Cerin: Myybe, призыв к locale-gen пропал, отсутствует. Прежде, нужно сделать apt-get install locales, - koppor
Это не изменит LANG для корневой оболочки Ubuntu 16.04, так как она отменена в /root/.profile. - Willem


То, что сработало для меня в 12.10, было следующим:

apt-get install language-pack-en-base  

Это было после dpkg-reconfigure locales не дали никаких результатов.


30
2018-04-28 02:01



Это лучший ответ. Дело не в том, что мои локали были установлены неправильно, но на самом деле они не существовали. Я думаю, что это похоже на проблему OP («Нет такого файла или каталога» довольно ясно, если ваш язык является set правый!). - Breakthrough
Я получал проблему с OPs когда-либо, когда я использовал apt-get на Ubuntu 12.04. Это решило это без необходимости редактировать файлы. - Deepend
«language-pack-en-base - это уже самая новая версия». - karlingen
Выход из системы и вход в систему могут помочь - S.M.Mousavi
Работал для меня в ubuntu chroot под дебианским. Благодаря :) - Wyatt8740