Настройки локали Ubuntu не отражаются в переменных окружения

Вопрос или проблема

Моя машина с Ubuntu (24.04) должна использовать локаль en_US.UTF-8, но почему-то это не отражается в фактическом выводе locale:

user@machine:~$ locale -a
C
C.utf8
POSIX
en_US.utf8
user@machine:~$ localectl status
Системная локаль: LANG=en_US.UTF-8
    VC Keymap: (unset)         
   X11 Layout: de
    X11 Model: pc105
user@machine:~$ cat /etc/default/locale
LANG=en_US.UTF-8
user@machine:~$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Почему переменные окружения не соответствуют настройкам?

Проблема связана с конфигурацией моего sshd (UsePAM no), я нашел ответ здесь.

Ответ или решение

Ситуация, которую вы описали, связана с проблемой отображения локали в среде во время сеанса. Это довольно распространённая проблема на системах Ubuntu, особенно когда они настроены для работы с SSH. Давайте подробно рассмотрим возможные причины и решения.

Контекст проблемы

Вы упомянули, что ваш Ubuntu (24.04) должен использовать локаль en_US.UTF-8, однако вывод команды locale показывает, что переменные среды не установлены, и вместо этого отображается значение "POSIX" для различных категорий локализации:

LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
...

Обратите внимание, что localectl показывает, что системная локаль установлена правильно, однако переменные среды LANG и другие не задаются. Это может быть связано с конфигурацией SSH, а именно с параметром UsePAM.

Возможные причины

  1. Конфигурация SSH: Если в файле конфигурации SSH (/etc/ssh/sshd_config) установлен параметр UsePAM no, это может приводить к тому, что пользовательские сеансы не загружают правильные локали. Параметр UsePAM разрешает использование PAM (Pluggable Authentication Modules) для контроля аутентификации и настроек окружения.

  2. Настройки в файловой системе: Файл /etc/default/locale, который вы проверили, показывает правильные локальные настройки, но они могут не применяться, если параметр PAM отключен. Без PAM система может не загружать настройки среды, которые обычно используются для настройки переменных локали.

  3. Запуск оболочки: Когда вы подключаетесь через SSH, оболочка может не загружать настройки, если она не настроена соответствующим образом. Это может произойти, если вы используете не интерактивную оболочку, что может блокировать установку переменных локали.

Решения

  1. Включение PAM: Первое и простое решение — это включение UsePAM. Отредактируйте файл /etc/ssh/sshd_config, изменив параметр на UsePAM yes, и затем перезапустите службу SSH:

    sudo systemctl restart sshd

    Это позволит PAM управлять окружением, и переменные локали должны устанавливаться правильно.

  2. Проверка конфигурации оболочки: Убедитесь, что ваши конфигурационные файлы оболочки (~/.bashrc, ~/.bash_profile, ~/.profile) содержат необходимые строки для установки локали. Вы можете добавить следующее в один из этих файлов:

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

    После внесения изменений перезапустите сеанс или выполните команду source ~/.bashrc.

  3. Обновление локалей: Если вышеуказанные шаги не сработают, вы можете попробовать пересобрать локали с помощью команды:

    sudo locale-gen en_US.UTF-8
    sudo update-locale

    Это сгенерирует необходимые параметры локали и обновит системные настройки.

  4. Проверка значений окружения: После выполнения изменений вы можете проверить установленные значения с помощью команды locale. Убедитесь, что значения теперь отображаются корректно.

Заключение

Решение вашей проблемы с локалью на Ubuntu связано с использованием PAM в конфигурации SSH. Найденное вами решение является правильным путем. Гарантируя, что среды аутентификации и пользовательские сеансы настроены правильно, вы сможете избежать подобных проблем в будущем. Не забывайте также проверять конфигурацию оболочки и обновлять локали, если это необходимо.

Оцените материал
Добавить комментарий

Капча загружается...