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

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

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   

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

451 голос | спросил HackToHell 11 J000000Wednesday12 2012, 18:08:59

19 ответов


463

Сначала запустите 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.

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

ответил Otto Kekäläinen 10 MonEurope/Moscow2012-12-10T16:45:15+04:00Europe/Moscow12bEurope/MoscowMon, 10 Dec 2012 16:45:15 +0400 2012, 16:45:15
330

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

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

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

ответил Marcin 16 SunEurope/Moscow2012-12-16T08:11:58+04:00Europe/Moscow12bEurope/MoscowSun, 16 Dec 2012 08:11:58 +0400 2012, 08:11:58
138

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

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

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

ответил Rinzwind 11 J000000Wednesday12 2012, 18:19:11
106

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

export LC_ALL="en_US.UTF-8"
ответил ratz 8 42012vEurope/Moscow11bEurope/MoscowThu, 08 Nov 2012 13:42:09 +0400 2012, 13:42:09
84

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

ответил user249697 1 +04002014-10-01T04:45:27+04:00312014bEurope/MoscowWed, 01 Oct 2014 04:45:27 +0400 2014, 04:45:27
60

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

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

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

ответил sgtpep 1 PM00000030000001731 2014, 15:51:17
29

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

apt-get install language-pack-en-base  

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

ответил George Answerology 28 AMpSun, 28 Apr 2013 06:01:49 +040001Sunday 2013, 06:01:49
16

Не забудьте выйти из сеанса SSH (или вашего X11), снова и снова войти в систему. Все эти предложения не сработали для меня, если я не вернусь назад ....

ответил Michael R. Hines 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 26 Sep 2014 10:51:34 +0400 2014, 10:51:34
11

Для Ubuntu 12.10 ни одно из вышеописанных действий, кроме решения ratzs. Я рекомендую добавить это в файл /etc/bash.bashrc:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
ответил Lovemore Nalube 27 MaramWed, 27 Mar 2013 07:19:29 +04002013-03-27T07:19:29+04:0007 2013, 07:19:29
11

Я застрял в странном состоянии, когда моя локальная машина настроена на es, и поэтому удаленный компьютер (через vagrant) был предоставлен в состоянии без обращения , Поэтому мне пришлось использовать руководство export= только для облегчения успешного dpkg-reconfigure. Тогда система в порядке.

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
ответил charneykaye 22 MarpmTue, 22 Mar 2016 21:02:37 +03002016-03-22T21:02:37+03:0009 2016, 21:02:37
9

Я написал скрипт bash , чтобы исправить вышеуказанную проблему. Вышеуказанные ответы полезны, но установка переменных языка путем простого экспорта значений в переменной оболочки будет работать только для сеанса. Я надолго решил эту проблему, экспортировав переменные locale в файл .bash_profile. Вы также можете использовать /etc/profile файл вместо .bash_profile.

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

Не забывайте source .bash_profile и следуйте сценарий в простой настройке.

ответил Ajeet Khan 27 FebruaryEurope/MoscowbSat, 27 Feb 2016 22:26:29 +0300000000pmSat, 27 Feb 2016 22:26:29 +030016 2016, 22:26:29
8

Вы можете попробовать:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

, где ru_RU - код вашей страны.

ответил Koss 17 J0000006Europe/Moscow 2013, 17:34:27
6

Как сказано здесь, в Вики-версии Debian , вы можете редактировать /etc/locale.gen и добавить все локали (или раскомментировать их, у меня был список всех локалей, кроме всех тех, которые я использовал в качестве комментариев), которые вы хотите получить в своей системе. Затем выполните

sudo dpkg-reconfigure locales

, чтобы обновить локали в вашей системе. Теперь все локали, которые вы добавили /раскомментировали в /etc/locale.gen, доступны в вашей системе без каких-либо предупреждений.

ответил msrd0 14 SunEurope/Moscow2014-12-14T14:28:41+03:00Europe/Moscow12bEurope/MoscowSun, 14 Dec 2014 14:28:41 +0300 2014, 14:28:41
6

Текущий принятый ответ недостаточен в стратегии устранения неполадок, поскольку у вас может быть человеческая ошибка. Вы настроите свою систему на en_US, но у вас есть en_GB включен в /etc/locale.gen, как у меня в потоке здесь для малины Pi 3b. У вас должно быть все используемые вами локали в /etc/locale.gen.

Я использовал en_GB.UTF-8 UTF-8 только в /etc/locale.gen. Мне нужно было включить только en_US.UTF-8 UTF-8 из-за того, что для него выполняются другие команды. Поэтому я прокомментировал ГБ и раскоментировал США, и теперь все работает

[email protected]:~ $ sudo vim /etc/locale.gen

[email protected]:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

[email protected]:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

Теперь я не получаю эти ошибки локали с любыми командами.

Система: Raspbian Jessie
Аппаратное обеспечение: малина Pi 3b

ответил Léo Léopold Hertz 준영 22 J0000006Europe/Moscow 2016, 23:25:19
3

Если вы используете среду KDE, проверьте файл setlocale.sh в ~/.kde/env/:

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
ответил MaximKostrikin 5 FebruaryEurope/MoscowbWed, 05 Feb 2014 12:36:22 +0400000000pmWed, 05 Feb 2014 12:36:22 +040014 2014, 12:36:22
2
  1. Вам может потребоваться запустить sudo dpkg-reconfigure также для приложения, которое вы установили, в то время как настройки «locale» были недопустимыми /не соответствующими.

    В то время как языковой стандарт системы был неправильно настроен, я установил vim. Позже, когда система была исправлена, я увидел ситуацию, когда vim отображал символы utf-8 некорректно как странные символы, в то время как nano и less показывали их правильно. Выполнение

    sudo dpkg-reconfigure vim
    

    появился исправление проблемы после исправления системных настроек.

  2. Я также заметил то же самое, что уже упоминалось: вам может потребоваться отключить /повторно подключить SSH, чтобы сделать видимыми изменения.

ответил ajaaskel 18 ThuEurope/Moscow2014-12-18T22:02:08+03:00Europe/Moscow12bEurope/MoscowThu, 18 Dec 2014 22:02:08 +0300 2014, 22:02:08
2

Добавление следующего текста в ~/.profile работает для меня:

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Я использую 64-битный сервер Ubuntu 16.04 LTS на Linode.

ответил Jingguo Yao 9 Mayam17 2017, 06:07:56
1

Это сработало для меня, когда у меня была такая же проблема (на основе решения предоставлено dman ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
ответил pythonhunter 27 AM00000090000000931 2014, 09:21:09
1

У меня возникла проблема с запуском темы «Agnoster» с oh-my-zsh на моей рабочей станции docker с аналогичными сообщениями об ошибках. (Это быстрее, чем wsl IMO, и я могу установить docker.sock в этот контейнер с помощью Hyper-V VM, управляемой Docker For Windows, что позволяет мне делать вещи докеров)

Сочетание некоторых предложений из ответов помогло исправить это для меня.

Я добавил это в мой Dockerfile

RUN apt-get install -y locales
RUN sudo locale-gen "en_US.UTF-8"
RUN echo 'LANG="en_US.UTF-8"' > /etc/profile.d/locale.sh
RUN echo 'LANGUAGE="en_US.UTF-8"' >> /etc/profile.d/locale.sh
RUN echo 'LC_ALL="en_US.UTF-8"' >> /etc/profile.d/locale.sh

 введите описание изображения здесь>> </a> </p>

<p> <a href= Вот суть, если вы хотите попробовать.

ответил sdkks 30 J0000006Europe/Moscow 2018, 17:25:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132