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

425

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

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   

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

    
задан HackToHell 11.07.2012 в 16:08
источник

18 ответов

428

Сначала запустите 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.12.2012 в 13:45
источник
313

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

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

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

    
ответ дан Marcin 16.12.2012 в 05:11
источник
129

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

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

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

    
ответ дан Rinzwind 11.07.2012 в 16:19
источник
99

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

export LC_ALL="en_US.UTF-8"
    
ответ дан ratz 08.11.2012 в 10:42
источник
78

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

ответ дан user249697 01.10.2014 в 02:45
источник
56

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

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

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

    
ответ дан sgtpep 01.08.2014 в 13:51
источник
28

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

apt-get install language-pack-en-base  

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

    
ответ дан George Answerology 28.04.2013 в 04:01
источник
13

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

    
ответ дан Michael R. Hines 26.09.2014 в 08:51
источник
10

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

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
    
ответ дан Lovemore Nalube 27.03.2013 в 04:19
источник
10

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

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
    
ответ дан charneykaye 22.03.2016 в 19:02
источник
8

Я написал скрипт 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.02.2016 в 20:26
источник
6

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

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.06.2013 в 15:34
источник
5

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

sudo dpkg-reconfigure locales

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

    
ответ дан msrd0 14.12.2014 в 12:28
источник
4

Текущий принятый ответ недостаточен в стратегии устранения неполадок, поскольку у вас может быть человеческая ошибка. Вы устанавливаете свою систему на 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 из-за других команд, запускаемых для него. Поэтому я прокомментировал ГБ и раскоментировал США, и теперь все работает

masi@raspberrypi:~ $ sudo vim /etc/locale.gen

masi@raspberrypi:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

masi@raspberrypi:~ $ 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.06.2016 в 22:25
источник
2

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

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
    
ответ дан MaximKostrikin 05.02.2014 в 09:36
источник
1
  1. Вам может потребоваться запустить sudo dpkg-reconfigure также для приложения, которое вы установили, в то время как настройки «locale» были недействительными / не совпадают.

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

    sudo dpkg-reconfigure vim
    

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

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

ответ дан ajaaskel 18.12.2014 в 20:02
источник
1

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

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

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

    
ответ дан Jingguo Yao 09.05.2017 в 05:07
источник
-1

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

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
    
ответ дан pythonhunter 27.08.2014 в 07:21
источник

Ознакомьтесь с другими вопросами по меткам