Я получаю это сообщение каждый раз, когда делаю что-то вроде запуска или остановки службы.
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
Как исправить эту ошибку?
Сначала запустите 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.
Теперь вы больше не увидите никаких ошибок!
Это сработало для меня, когда у меня была такая же проблема (на основе решения , предоставленного dman ):
sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
Добавление следующего текст в ~ / .profile
у меня работает:
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
Я использую 64-битный сервер Ubuntu 16.04 LTS на Linode.
Вам может потребоваться запустить sudo dpkg-reconfigure
также для приложения, которое вы установили, когда настройки «языкового стандарта» недействительны / не совпадают.
В то время как языковой стандарт системы был настроен неправильно, я установил vim
. Позже, когда языковой стандарт системы был исправлен, я увидел ситуацию, когда vim
неправильно отображал символы utf-8 как странные символы, в то время как nano
и less
отображали их правильно. Запуск
sudo dpkg-reconfigure vim
, похоже, решил проблему после исправления системных настроек.
Я также заметил то же самое, что уже упоминалось: вам может потребоваться отключить / повторно подключить SSH, чтобы изменения были видны.
Если Вы используете среду KDE, проверьте файл setlocale.sh
в ~/. kde/env/
:
$ cat ~/.kde/env/setlocale.sh
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en
Текущий принятый ответ не достаточен в стратегии поиска и устранения неисправностей, так как вы можете столкнуться с человеческой ошибкой.
Вы настраиваете свою систему на 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
Вы можете попробовать:
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
- это код вашей страны.
Как сказано здесь, в Debian Wiki , вы можете отредактировать /etc/locale.gen
и добавить все локали (или раскомментировать их, у меня было список всех локалей, кроме той, которую я использовал в качестве комментариев), которую вы хотите поддерживать в своей системе. Затем выполните
sudo dpkg-reconfigure locales
, чтобы обновить локали в вашей системе. Теперь все локали, которые вы добавили / раскомментировали в /etc/locale.gen
, доступны в вашей системе без каких-либо предупреждений.
Я застрял в странном состоянии, когда моя локальная машина была настроена на es
, и поэтому удаленная машина (через бродягу
) была инициализирована в необработанное состояние. Поэтому мне пришлось использовать руководство export =
только для облегчения успешного dpkg-reconfigure
. Тогда с системой все в порядке.
export LC_ALL="en_US.UTF-8"
sudo dpkg-reconfigure locales
Я написал сценарий 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
и следуйте сценарию в простой настройке.
Не забывайте выйдите из сеанса SSH (или вашего X11), выйдя и снова войдя в систему. Все эти предложения не сработали для меня, пока я снова не вошел в систему ....
В 12.10 у меня сработало следующее:
apt-get install language-pack-en-base
Это было после того, как dpkg-reconfigure locales
не дал результатов.
Для этого есть команда:
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
Она обновляет / etc / default / locale
с предоставленными значениями.
] Чтобы применить изменения, вы можете
source /etc/default/locale
Это обычная проблема, если вы подключаетесь удаленно, поэтому решение - не пересылать ваш языковой стандарт. Отредактируйте / etc / ssh / ssh_config
и закомментируйте строку SendEnv LANG LC _ *
.
Просто добавьте следующее к вашему файлу .bashrc
(если вы используете bash)
export LC_ALL="en_US.UTF-8"
Они должны исчезнуть после выполнения:
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
dpkg-reconfigure
перенастраивает пакеты после того, как они уже были
установлены. Передайте ему имена пакета или пакетов для перенастройки.
Он задаст вопросы о конфигурации, как если бы пакет был
первая установка.
Ничего из предложенного выше не сработало в моем случае (Ubuntu Server 12.04LTS). Что наконец помогло
помещал в файл / etc / environment
:
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
По какой-то причине он отсутствовал. Выходные данные для локали и других команд выглядели так, как будто переменные были правильно определены. Другими словами, не принимайте как должное, все основные вещи объявляются там, где они должны быть объявлены.
Для Ubuntu 12.10 ничего из вышеперечисленного не работало, кроме решения ratzs. Я рекомендую добавить это в ваш / etc / bash.bashrc файл:
export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"
Я испытал это, входя с одной машины на другую через 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