Настройка мультиязычности и поддержки кириллицы в Linux
🌍 Настройка мультиязычности и поддержки кириллицы в 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 задан глобально — кириллица будет работать везде.