Привет всем!
Поскольку довольно часто и методично многие интересуются настройкой Великого и Могучего в Linux (будь то консоль, Иксы, или приложения для них), мне пришла в голову мысль описать все это хозяйство и выложить сюда :). Еще одной причиной послужил мой недавний апгрейд Шапки 5.2 до Шапки 6.02 со всеми вытекающими оттуда последствиями. Итак:
Во-первых, существует несколько кодировок Великого и Могучего, а это:koi8-r, iso8859-5, Глюк's CP-1251 и DOS' CP-866 (может даже больше ;) Linux можно отстроить для работы с каждой из них, это дело вкуса. Я остановлюсь на koi8-r. Немного теории: любое locale-aware приложение (а Иксы - тоже приложение) в Linux использует локаль, на которую настроена Ваша система. Система (точнее libc) использует переменную LANG (и прочие, типа LC_NUMERIC) для определения локали. Значение переменной описывает, как система должна обрабатывать числа, даты и общий ввод/вывод. Все это описывается в каталоге /usr/share/locale/нужная_ЛОКАЛЬ в файлах LC_*. Сообщения libc на языке этой локали находятся там же в подпапке LC_MESSAGES. Среди прочих в /usr/share/locale есть ru, ru_SU и ru_RU. ru_RU в RedHat описывает iso8859-5, а ru_SU - koi8-r. Исходя из этого нам надо подставить в переменную LANG (и прочие) значение ru_SU, и мы получим таким образом возможность наблюдать вывод stdout/stderr системы и программ на Русском, а также вводить Русский текст. Небольшой отступ: ru в названии означает Русский язык, а SU - страну расположения. Еще одно: все установки желательно запускать при загрузке, используя initscripts. Ну ладно, хватит воду лить :) Итак, в последних системах на основе RedHat редактируем файл /etc/sysconfig/keytable и пишем в нем следующую строку:
KEYTABLE=ru
Сие заставит систему загружать таблицу ru командой loadkeys при старте. Для этого используется скрипт /etc/rc.d/init.d/keytable. Чтобы он запускался на всех runlevel'ах (ну, может, кроме 0 и 6) в папках /etc/rc.d/rc#.d/ ссылка на этот скрипт должна выглядеть так: S75keytable. # в имени папки значит runlevel, буква S в начале имени ссылки - service start на этом runlevel. (Не спрашивайте о цифрах - сам еще не знаю :). Далее нам надо подгружать соответствующий шрифт и трансляторы символов для консоли. Для этого в файле /etc/sysconfig/i18n пишем следующее:
Эти переменные используются скриптом /sbin/setsysfont из пакета console-tools, который запускается из скрипта /etc/rc.d/rc.sysinit каждый раз при загрузке. И, наконец, при входе пользователя в систему срабатывает скрипт /etc/profile.d/lang.sh и устанавливает переменные в Шелл (Примечание: этот скрипт написан только для bash или sh). Если Вы сделали все, как описано выше, то после перезагрузки или явно запустив скрипт командой /sbin/setsysfont и пере-логинившись (слово-то какое!) после нажатия правого Control Вы сможете вводить Кириллицу. Пользователям (t)csh необходимо создать файл /etc/profile.d/lang.csh со следующим содержанием (ну не написал РэдХат скрипт для csh, забыли наверное):
Вот собственно и все касательно локализации системы. Приложения, почуяв русский дух в системе, исправятся и заговорят по-русски (если есть соотв. переведенные файлы *.mo), а команды date и ls -al выдадут даты по-русски. Несколько слов по-поводу Икс-Окон: важно указать русские шрифты первыми в /etc/X11/XF86Config, а также не путать кодировки и использовать koi8-r по умолчанию в Иксовых приложениях.
P.S. Забивать мозги командами типа echo blahblah, loadkeys, mapscrn ни к чему - это все уже стоит в нужных местах в /etc/rc.d/rc.sysinit и /etc/profile.d/lang.sh в последних дистрибутивах RedHat.
P.P.S. Я описал все так, как это вижу и понимаю я. Если я где ошибся-поправьте.