Как исправить предупреждение о настройке локали от Perl?


когда я запускаю perl, Я получаю предупреждение:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

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

30 480

30 ответов:

ваша ОС не знает о en_US.UTF-8.

вы не упомянули конкретную платформу, но я могу воспроизвести вашу проблему:

% uname -a
OSF1 hunter2 V5.1 2650 alpha
% perl -e exit
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Я предполагаю, что вы использовали ssh для подключения к этому старому хосту с более новой настольной машины. Это общее для /etc/ssh/sshd_config содержат

AcceptEnv LANG LC_*

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

предупреждение дает вам подсказку о том, как уничтожить его, если вы не требуется полная локаль:

% env LANG=C perl -e exit
%

или с Баша:

$ LANG=C perl -e exit
$ 

для постоянного исправления, выберите один из

  1. на старом хосте установите LANG переменная окружения в файле инициализации вашей оболочки.
  2. измените свою среду на стороне клиента,например, а не ssh hunter2 используйте команду LANG=C ssh hunter2.
  3. если у вас есть права администратора, остановите ssh от отправки переменных среды закомментировать SendEnv LANG LC_* строка местные. (Спасибо ответ. Смотрите ошибка 1285 для OpenSSH для больше.)

вот как решить эту проблему на Mac OS Lion (10.7) или Cygwin (Windows 10):

добавьте следующие строки в ваш bashrc или bash_profile на главной машине:

# Setting for the new UTF-8 terminal support in Lion
export LC_CTYPE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Если вы используете zsh, отредактируйте zshrc:

# Setting for the new UTF-8 terminal support in Lion
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8

Если вы создаете rootfs с помощью debootstrap, вам нужно будет создать локали. Вы можете сделать это, выполнив:

# (optional) enable missing locales
sudo nano /etc/locale.gen

# then regenerate
sudo locale-gen

этот совет исходит от, https://help.ubuntu.com/community/Xen

это обычно означает, что вы не правильно настроили локали на вашем Linux box.

на Debian или Ubuntu, это означает, что вам нужно сделать

$ sudo locale-gen
$ sudo dpkg-reconfigure locales

см. также man locale-gen.

использование:

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

Он работает Debian. Я не знаю почему-но locale-gen не имел результатов.

важно! Это временное решение. Он должен быть запущен для каждого сеанса.

только для пользователей macOS и Mac OS X

я получал то же самое предупреждение при использовании Git

чтобы устранить это предупреждение убрать the Set locale environment variable on startup опция и перезагрузить терминал. Ниже снимок экрана представляет мои настройки терминала.

enter image description here

это просто исправить в Ubuntu. Вы должны создать локали с нуля, выполнив следующие команды из командной строки:

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

это должно создать локали, а затем повторно настроить их.

теперь я использую это:

$ cat /etc/environment
...
LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

затем выйдите из сеанса SSH и войдите снова.

ответ:

только это мне помогло:

$ locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

$ sudo su

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

# locale-gen en_US.UTF-8
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

# dpkg-reconfigure locales
Generating locales...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8... done
  en_GB.UTF-8... done
  en_HK.UTF-8... done
  en_IE.UTF-8... done
  en_IN.UTF-8... done
  en_NG.UTF-8... done
  en_NZ.UTF-8... done
  en_PH.UTF-8... done
  en_SG.UTF-8... done
  en_US.UTF-8... up-to-date
  en_ZA.UTF-8... done
  en_ZM.UTF-8... done
  en_ZW.UTF-8... done
Generation complete.

# exit

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

добавление следующего в /etc/environment Исправлена проблема для меня на Debian и Ubuntu (конечно, изменить в соответствии с языковым стандартом, который вы хотите использовать):

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

на Debian после долгих поисков в своем деле.

первый:

sudo apt-get purge locales

затем:

sudo aptitude install locales

и знаменитое:

sudo dpkg-reconfigure locales

Это избавляет систему локалей, затем повторно устанавливает локали и понижает libc6 с 2.19 до 2.13, что является проблемой. Затем снова настраивает локали.

Если вы используете Mac OS X v10. 10 (Yosemite) или выше для подключения к серверу Linux, вы можете попробовать эти шаги.

  1. сохраните файл/etc/ssh / sshd-config original

  2. поставить на свой ~/.файл

    export LANG="en_US"
    export LC_ALL=$LANG.UTF-8
    
  3. Run

    dpkg-reconfigure locales
    

    и выбрать "язык.UTF-8"

вам нужно настроить локаль соответствующим образом в /etc/default/locale,логаут, логин и затем выполнить команды

root@host:~# echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale
root@host:~# exit
local-user@local:~$ ssh root@host
root@host:~# locale-gen en_US.UTF-8
root@host:~# dpkg-reconfigure locales
sudo nano /etc/locale.gen

раскомментируйте локали, которые вы хотите использовать (например,en_US.UTF-8 UTF-8):

выполнить:
sudo /usr/sbin/locale-gen

Источник:http://people.debian.org / ~schultmc/locales.html

perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory

устранение:

попробуйте это ( uk_UA.UTF-8 моя текущая локаль. Напишите свою локаль, например en_US.UTF-8 !)

sudo locale-gen uk_UA.UTF-8

и этого.

sudo dpkg-reconfigure locales

для Ubuntu используйте это,

#export LANGUAGE=en_US.UTF-8
#export LC_ALL=en_US.UTF-8
#export LANG=en_US.UTF-8
#export LC_TYPE=en_US.UTF-8

работал для меня.

для меня я исправляю эту ошибку редактирования .файл bashrc добавить экспорт. Добавить после первоначальных комментариев.

Добавить язык suport.

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

Вид Regads,

после принятого ответа:

LANG=c ssh hunter2.

LC_ALL=c ssh hunter2

на стороне клиента сделал трюк для меня.

добавить LC_ALL="en_GB.utf8" до /etc/environment и перезагрузка. Вот и все.

С zsh ohmyzsh я добавил Это к .zshrc:

 # You may need to manually set your language environment
 LANGUAGE=en_US.UTF-8
 LANG=en_US.UTF-8
 LC_CTYPE=en_US.UTF-8
 LC_ALL=en_US.UTF-8

удалив строку export LANG=en_US.UTF-8

открыл новую вкладку и SSHed В, работал для меня :)

как всегда, дьявол кроется в деталях...

On Mac OS X v10.7. 5 (Лев), чтобы исправить некоторые Джанго ошибки, по моему ~/.bash_profile Я:

export LANG=en_EN.UTF-8
export LC_COLLATE=$LANG
export LC_CTYPE=$LANG
export LC_MESSAGES=$LANG
export LC_MONETARY=$LANG
export LC_NUMERIC=$LANG
export LC_TIME=$LANG
export LC_ALL=$LANG

и в свою очередь в течение длительного времени я получил это предупреждение при использовании Perl.

мой плохой! Как я понял гораздо позже, моя система en_US.UTF-8! Я исправил это просто изменив с

export LANG=en_EN.UTF-8

до

export LANG=en_US.UTF-8

для всех, кто подключается к DigitalOcean или другому облачному хостинг-провайдеру из iTerm2.приложение на MacOS High Sierra и получение этой ошибки на некоторых командах:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "en_US.UTF-8"
  are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").

это исправило проблему для меня:

enter image description here

Я знаю, что эта тема старая, но, возможно, кто-то найдет это полезным. Я знаю, как это может раздражать.

добавить недостающие локали .файл

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

в моем случае, это был выход:

LANGUAGE = (unset),
LC_ALL = (unset),
LC_PAPER = "ro_RO.UTF-8",
LC_ADDRESS = "ro_RO.UTF-8",
....

решение:

sudo locale-gen ro_RO.UTF-8

ssh перезаписывает переменные локали LC по умолчанию. Смотрите /etc/ssh/sshd_config:

AcceptEnv LANG LC_*

Так что, возможно, вам нужно установить эти переменные в локальной оболочке.

Если вы не заботитесь о проблеме локали,вы можете установить PERL_BADLANG=0. Конечно, это может привести к неправильной локализации.

для меня, на Ubuntu 16.04 (Xenial Xerus) сработало следующее:

root@host:~#locale-gen en_GB.UTF-8
root@host:~#localectl set-locale LANG=en_GB.UTF-8,LC_ALL=en_GB.UTF-8

перезагрузите...

все предыдущие ответы неверны. Сообщение ясно - отсутствует локаль. Решение состоит в том, чтобы добавить соответствующую локаль. Вы делаете это, редактируя /etc/locale.gen file, удалите знак # перед тем, как локаль будет объявлена отсутствующей, а затем выполните команду:

$ sudo locale-gen

это фактически создаст локали, указанные в /etc/locale.Gen и поэтому сообщение не будет показано.

в моем случае, с debian8. 6, мне пришлось изменить настройки в:

/etc/ssh/ssh_config на #AcceptEnv LANG LC_*

и sshd_config на #SendEnv LANG LC_*

затем перезапустите службу ssh.

наконец, сделал

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

в Arch Linux с помощью клавиатуры / локали Великобритании у меня была следующая ошибка:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.utf8"
  • экспорт моих локалей в /etc/profile не починили.

  • однако я исправил это путем редактирования /etc/locale.gen и включения
    элемент en_US.utf8 локаль perl ожидается, чтобы найти и работает local-gen.

(я использую pac-manager, который использует целую кучу perl модули от Aur так переустановить perl в моем конкретном случае было бы неприятно)

добавление правильной локали в ~/.bashrc,~/.bash_profile,/etc/environment и как будет решать проблему, однако это не рекомендуется, так как он переопределяет параметры из /etc/default/locale, что в лучшем случае сбивает с толку и может привести к тому, что локали не будут применяться последовательно в худшем случае.

вместо этого следует редактировать /etc/default/locale напрямую, что может выглядеть примерно так:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=en_US