Skip to main content

Настройка мультиязычности и поддержки кириллицы в Linux

Этот мануал описывает, как корректно настроить отображение русских символов (UTF-8) в Linux-системе: консоль, SSH, приложения, systemd, Docker и Ansible.


🔍 Как понять, есть ли проблема

Типичные симптомы:

  • вместо кириллицы — ???? или кракозябры
  • locale выводит C или POSIX
  • команды с русскими именами файлов работают некорректно
  • в логах systemd или приложений битая кодировка

Проверка текущего состояния:

locale

❌ Плохо:

LANG=C
LC_ALL=

✅ Хорошо:

LANG=ru_RU.UTF-8
LC_ALL=

📦 Установка необходимых локалей

Debian / Ubuntu

apt update
apt install -y locales

RHEL / Rocky / Alma / CentOS Stream

dnf install -y glibc-langpack-ru

Arch Linux

pacman -S glibc

🧩 Генерация локали ru_RU.UTF-8

Debian / Ubuntu

nano /etc/locale.gen

Раскомментировать:

ru_RU.UTF-8 UTF-8

Сгенерировать:

locale-gen

🌐 Установка локали по умолчанию

localectl set-locale LANG=ru_RU.UTF-8

🖥 Принудительная установка (cron, systemd, Ansible)

/etc/environment

LANG=ru_RU.UTF-8
LC_ALL=ru_RU.UTF-8

🔐 SSH

В /etc/ssh/sshd_config:

AcceptEnv LANG LC_*
systemctl restart sshd

🧰 systemd

В unit-файле:

[Service]
Environment="LANG=ru_RU.UTF-8"
Environment="LC_ALL=ru_RU.UTF-8"
systemctl daemon-reexec

🐳 Docker

ENV LANG=ru_RU.UTF-8
ENV LC_ALL=ru_RU.UTF-8

🛠 Ansible

ansible_env:
  LANG: ru_RU.UTF-8
  LC_ALL: ru_RU.UTF-8

🧪 Проверка

echo "Привет, мир"
touch тест.txt
ls

✅ Итог

Если локаль сгенерирована и LANG=ru_RU.UTF-8 задан глобально — кириллица будет работать везде.