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

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

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   

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

558
задан 20 January 2015 в 17:37

19 ответов

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

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

550
ответ дан 20 January 2015 в 17:37

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

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
3
ответ дан 20 January 2015 в 17:37

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

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

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

2
ответ дан 20 January 2015 в 17:37
  1. Вам может потребоваться запустить sudo dpkg-reconfigure также для приложения, которое вы установили, когда настройки «языкового стандарта» недействительны / не совпадают.

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

     sudo dpkg-reconfigure vim
     

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

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

2
ответ дан 20 January 2015 в 17:37

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

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
3
ответ дан 20 January 2015 в 17:37

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

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

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

7
ответ дан 20 January 2015 в 17:37

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

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 - это код вашей страны.

8
ответ дан 20 January 2015 в 17:37

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

sudo dpkg-reconfigure locales

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

6
ответ дан 20 January 2015 в 17:37

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

export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
11
ответ дан 20 January 2015 в 17:37

Я написал сценарий bash , чтобы исправить указанную выше проблему.Приведенные выше ответы полезны, но установка переменных локали путем простого экспорта значений в переменную оболочки будет работать только для сеанса. Я окончательно решил эту проблему, экспортировав переменные локали в файл .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

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

9
ответ дан 20 January 2015 в 17:37

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

20
ответ дан 20 January 2015 в 17:37

В 12.10 у меня сработало следующее:

apt-get install language-pack-en-base  

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

34
ответ дан 20 January 2015 в 17:37

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

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

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

] Чтобы применить изменения, вы можете

source /etc/default/locale
76
ответ дан 20 January 2015 в 17:37

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

102
ответ дан 20 January 2015 в 17:37

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

export LC_ALL="en_US.UTF-8"
128
ответ дан 20 January 2015 в 17:37

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

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

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

160
ответ дан 20 January 2015 в 17:37

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

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

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

391
ответ дан 20 January 2015 в 17:37

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

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
12
ответ дан 20 January 2015 в 17:37

Источник проблемы

Я испытал это, входя с одной машины на другую через ssh ]. На удаленной машине не было файлов локали, которые были у меня на моей локальной машине. Вы можете либо отключить пересылку языкового стандарта с локального компьютера на удаленный (в файле / etc / ssh / sshd_config удалите строку AcceptEnv LANG LC_CTYPE… ), либо установите locale (в этом случае менять его не нужно)

Установка

В Fedora, RHEL, Redhat, CentOS Я использовал

sudo dnf install langpacks-de

для немецких языковых пакетов (de). Вышел из системы, и это сработало.

Найдите другие языковые пакеты с помощью

dnf search langpacks-

Изменение / активация

Чтобы вывести список доступных языков, я использовал

localectl list-locales

И чтобы установить новый

sudo localectl set-locale de_DE.utf8
1
ответ дан 5 January 2021 в 23:38

Другие вопросы по тегам:

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