Як виправити параметри локалі в Debian видавленні


17

Я час від часу отримую локальні помилки і намагаюся запустити dpkg-переконфігурувати локалі, щоб усунути проблему. Ось результат:

:~$ sudo dpkg-reconfigure locales
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 the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Я шукав / usr / bin / locale, але він не існує у моїй системі. Чи потрібно мені її створити? Що я туди вкладаю?

Також я знайшов пов'язане питання, в якому сказано, що причина його проблеми була у файлі sshd_config. У файлі був такий запис:

AcceptEnv LANG LC_*

Я в основному стурбований тим, що це може спричинити проблеми для мого VPS, інакше, якщо це нічого серйозного, я буду радий ігнорувати цю проблему. Що я повинен зробити? Спасибі!


Ця ж проблема (LC_CTYPE = UTF-8, що невірно) може статися, коли ви входите через ssh з Mac у вікно Linux, і ваш термінал автоматично встановлює змінні середовища. Для цього є прапорець. Зніміть його, і ви добре підете. В iTerm це в профілі-> Вкладка терміналів.
raarts

Здається, виникла помилка з деяким розподілом на основі debian (включаючи ubuntu). Використання fr_FR.UTF-8 спричиняло проблеми (і локаль існував). Якщо locale-gen frстворити всі локальні файли fr (fr_BE, fr_CH тощо ...), це вирішить проблему. Можливо, спробуйтеlocale-gen en
Ентоні Гіббс

Відповіді:


10

спочатку:

sudo apt-get purge locales

потім:

sudo aptitude install locales

і відомі:

sudo dpkg-reconfigure locales

Це позбавляє систему локалів, після чого повторно встановлює локалі та знижує рівень libc6 з 2.19 до 2.13, в чому полягає проблема. Потім знову налаштовує локалі.


У мене точно така ж проблема. Тож за цією відповіддю, включаючи сховища Джессі, я міг би встановити localesбез пониження версії libc6.
shgnInc

це не допомогло
aexl

8

Якщо це трапляється під час SSHing у ваш ящик, але не на консолі, спробуйте налаштувати ваш ssh-клієнт (на локальній машині). Наприклад, на Mac OS X редагуйте / private / etc / ssh_config та коментуйте

# SendEnv LANG LC_*

Завдяки посаді бредмена на дошці оголошень Rasberry Pi .


Цей файл зараз: / private / etc / ssh / ssh_config
b4d

7

Я давно мав цю проблему, і всі звичайні поради щодо перестановки dpkg-локалів, мовного гена тощо не допомогли. Тож я трохи погрався зі змінними середовища, і я виявив, що система нудна на LC_CTYPEзмінну середовища! UTF-8не є дійсним значенням для нього. Встановивши його для en_US.UTF-8фіксації.

Щоб зміни були постійними, я побіг

update-locale LC_CTYPE=en_US.UTF-8

який пише до /etc/default/locale. А потім перезавантажте систему, щоб вона набула чинності повністю.


На жаль, це врожайність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 the standard locale ("C"). *** update-locale: Error: invalid locale settings: LC_CTYPE=en_US.UTF-8
aexl

2

Я бачив це раніше в старих установках Debian, і, хоча дратує, я ніколи не бачив, щоб це викликало проблеми.

Якщо

  /usr/bin/locale 

відсутня, спробуйте (як root):

  apt-get install libc-bin

який повинен встановлювати libc-bin, надаючи / usr / bin / locale.

Цей рядок AcceptEnv у вашому sshd_config є досить стандартним, і не повинен бути причиною вашої проблеми тут.


libc-bin вже встановлений, тому я оновив його і спробував запустити dpkg-reconfigure localesще раз. Без радості :(
blogjunkie

Чи існує / usr / bin / locale зараз? Якщо так, то який результат: locale -aі що в /etc/default/locale?
Чад Феллер

Вміст `/ etc / default / locale ': # Файл, створений оновленням-локалі LANG = en_US.UTF-8
blogjunkie

locale -aдає мені: locale: Неможливо встановити LC_CTYPE за замовчуванням: немає такого файлу чи каталогу C en_US.utf8 POSIX
blogjunkie

apt стверджував, що libc-bin встановлений, але щонайменше один файл відсутній (/ usr / bin / locale), і перевстановлення libc-bin, схоже, це виправило. Можна спробувати apt-get install --reinstall locales? Потім, для гарної міри, спробуйте locale-gen, що відновить будь-які локації, котрі не коментуються /etc/locale.gen(у вас має бути така лінія en_US.UTF-8 UTF-8). Після цього подивіться, чи locale -aпрацює.
Чад Феллер

2

Як Маной зробив наступне, але додав його до # ~ / .bashrc:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8

1

Якщо ви отримуєте помилки під час ssh'ing у віддаленій системі, і не хочете змінювати віддалену систему (наприклад, змінивши sshd_config), ви можете зробити наступне у вашій локальній системі (якщо вважати bash)

export LC_ALL=en_US
export LANGUAGE=en_US

і потім ssh user@remote


1

У моїй свіжій установчій програмі Debian (мінімальних) локали були повністю відсутні. Встановлення його ( aptitude install locales) та запуск locale-genвиконали трюк. Отже, хлопці, зробіть так, як згадував Чад Феллер, але перевірте, чи localesвстановлений пакет спочатку.


0

Якщо ви відключили автентифікацію PAM для ssh в /etc/ssh/sshd_config( UsePAM no), відповідальна конфігурація в /etc/pam.d/loginне ефективна:

session required pam_env.so readenv=1 envfile=/etc/default/locale

Результат: /etc/default/localeначебто, не має ефекту.

Таким чином, ви повинні налаштувати свого клієнта для надсилання vars LANG або експортування env vars у профілі сценаріїв, наприклад ~/.profile, ~/bashrcтощо.

Більше: http://wiki.debian.org/Locale#Standard


0

Я використовував німецьку VPS і не міг змінити місцевість, оскільки не було встановлено англійської мови.

Після встановлення я міг нарешті змінити локаль

aptitude install language-pack-en

0

в системах Debian це вирішить вашу проблему:

apt-get install locales-all

в системах Ubuntu встановлюють конкретний мовний пакет, наприклад:

apt-get install language-pack-en

locale-gen en_US.UTF-8


0

Mac підключення до свіжої Debian 10 встановлення. Жодна відповідь, що гугла в усьому Stack Exchange, не допомогла. Ось що було зроблено (і було прямо і надійно):

sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config

Запустіть це у вікні Debian, і це зупинить з'єднувальний mac-термінал зі збиттям локальних серверів ( більше інформації ).

Як бонус, це може навіть підвищити безпеку сервера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.