Генерация локали ru
При установке Debian я оставляю настройки локали по-умолчанию, т.к. всё равно потом занимаюсь тонкой настройкой. При таком подходе после установки ОС на VM можно увидеть интересные артефакты отсутствующей локали ru. Вот, например, после подключения через SSH я могу создать файл с кириллицей в имени:
$ touch very_important_file
$ touch очень_важный_файл
Локаль и отображение кириллицы на клиентской машине уже есть, поэтому создать файл никаких проблем нет. Но вот при запросе ls в ответ приходит “мусор”:
$ ls -1
very_important_file
''$'\320\276\321\207\320\265\320\275\321\214''_'$'\320\262\320\260\320\266\320\275\321\213\320\271''_'$'\321\204\320\260\320\271\320\273'
Если Вы видите такое для уже существующих файлов, то пугаться сразу не стоит.
Дело в отсутствующей локали на сервере (на VM). Локаль ru не скомпилирована и сервер просто не знает как ему правильно кодировать имя файла. Проверим список доступных локалей на сервере, чтобы не быть голословными:
$ localectl list-locales
C.UTF-8
en_US.UTF-8
Из доступных есть только C и en_US, это настройки по-умолчанию. Документацию по генерации локалей можно найти в man locale.gen. Проверим, какие локали ru доступны в файле locale.gen, который можно найти в директории /etc/:
$ cat /etc/locale.gen | grep ru_RU
# ru_RU ISO-8859-5
# ru_RU.CP1251 CP1251
# ru_RU.KOI8-R KOI8-R
# ru_RU.UTF-8 UTF-8
Из этих вариантов в современном мире с UTF-8 меня интересует, конечно же, только ru_RU.UTF-8 UTF-8. Раскомментирую эту локаль, чтобы её потом скомпилировать:
$ sudo sed -i 's/# ru_RU\.UTF-8 UTF-8/ru_RU\.UTF-8 UTF-8/g' \
/etc/locale.gen
$ cat /etc/locale.gen | grep ru_RU
# ru_RU ISO-8859-5
# ru_RU.CP1251 CP1251
# ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
Пришло время запустить locale-gen, чтобы он перекомпилировал выбранные локали:
$ sudo locale-gen
Generating locales (this might take a while)...
ru_RU.UTF-8... done
en_US.UTF-8... done
Generation complete.
Отлично, теперь перепроверяю вывод ls, так убежусь, что сервер узнал о ru:
$ ls -1
very_important_file
очень_важный_файл
Заработало, значит теперь можно увидеть кириллицу на этой VM с SSH-сервером.