Библиотека сайта rus-linux.net
3. Настройка вашего окружения
Перед тем как мы начнем настраивать различные части системы, нам надо настроить пару простых вещей. Большинство утилит, описываемых ниже, предполагают, что кириллические шрифты доступны и пользователь может вводить кириллические символы. Чтобы это действительно стало правдой, нам следует настроить окружение для того чтобы обеспечить и шрифты, и возможность ввода кириллицы.
Linux поддерживает два интерфейса для отображения информации, две различные моды. Одна из них это текстовая мода, а другая графическая, предоставляемая средствами X Window. Обе эти моды требуют различной настройки, которые описывается ниже.
3.1 Настройка текстовой моды
Вообще, настройка текстовых режимов - самый простой способ показывать и вводить символы кириллицы. Однако, имеется одно значительное осложнение: текстовые шрифты и расположение символов на клавиатуре зависят от реализации драйвера терминала. Следовательно, не имеется никакого общего способа для достижения цели в различных систем.
Ниже, я опишу способ как "справиться" с драйвером Linux консоли. Поэтому если вы имеете другую систему, не ожидайте, что это будет работать. Взамен, проконсультируйтесь с руководством по драйверу терминала и пошлите мне любую информацию, которую вы найдете. В этом случае я смогу включить это в дальнейшие версии этого документа.
Linux консоль
Консольный драйвер Linux - довольно хорошо настраиваемый образец программного обеспечения. Он может менять как шрифты, так и раскладки клавиатуры. Чтобы сделать это, вам нужен пакет kbd. Большинство дистрибутивов Linux устанавливают kbd как обязательную часть системы.
Пакет kbd содержит утилиты управления клавиатурой, кроме этого с ним поставляется широкий выбор шрифтов и раскладок.
Установка кириллицы с помощью kbd
обычно состоит из:
- Загрузки соответствующей раскладки клавиатуры, с помощью программы
loadkeys
. Redhat позволяет установить раскладку клавиатуры, которую система загружает по умолчанию во время загрузки. Это конфигурируется с помощью программы/usr/sbin/kbdconfig
. Или вы просто можете запуститьloadkeys
из вашего~/.profile
или сделав это руками. - Настройки экранного шрифта. Это делается с помощью программы
setfont
. Файлы шрифтов находятся в/usr/lib/kbd/consolefonts
. ВНИМАНИЕ: В старых версиях Linux, запуск программыsetfont
под X Windows мог завесить систему. Сейчас в этом случае печатается сообщение об ошибке.
Если вы являетесь приверженцем программ, выполняемых в текстовой моде,
и использующих достоинства PC псевдо - графики (таких как
Midnight Commander), вы можите предпочесть использовать шрифты
с Alt
кодировкой и консольной раскладкой
(console character map). Это означает,
что ваша консоль отображает Alt шрифты, но все кириллические
символы, соответствующие KOI-8R кодировки соответственным образом
отображаются в Alt
и поэтому отображаются правильно. Преимущество
этого метода заключается в том, что он позволяет использовать
псевдографические символы Alt
кодировки.
Короче, ниже перечислены команды, которые позволяют достичь этого эффекта.
loadkeys /usr/lib/kbd/keytables/ru.map setfont /usr/lib/kbd/consolefonts/Cyr_a8x16 mapscrn /usr/lib/kbd/consoletrans/koi2alt echo -ne "\033(K" # магическая последовательность
После выполнения этих команд и загрузки соответствующих файлов, вы можите переключать раскладку клавиатуры для ввода кириллических символов с помощью правого Control.
Магическая последовательность необходима для перекодировки вывода символов на экран если вы используете Alt шрифты. Она работает и вам не следует знать о ней что-то большее. Однако, если вам любопытно, то посмотрите в документацию к пакету kbd.
В заключение, для тех эстетов, кто не желает использовать Alt кодировку, я предлагаю другую версию описанной выше загрузочной последовательности, использующей родные KOI8-R шрифты.
loadkeys /usr/lib/kbd/keytables/ru.map setfont /usr/lib/kbd/consolefonts/koi8-8x16
Однако, не ожидайте красивых рамок в ваших программах, использующих для работы менюшки в текстовом режиме.
Теперь вы, вероятно, хотите проверить это.
Сконфигурируйте соответствующим образом bash или tcsh
(смотрите ниже этот шаг необходим),
перегрузите его, затем нажмите правую клавишу Control
.
Удостоверитесь, что вы можите печатать на русском правильно.
Клавиша 'q
' должна соответствовать "й
", 'w
'
соответствует "ц
", и т.д.
Если у вас возникли непредвиденные проблемы, то лучше всего вернуться к родной (то есть US) раскладке. Для этого сделайте следующие телодвижения:
loadkeys /usr/lib/kbd/keytables/defkeymap.map setfont /usr/lib/kbd/consolefonts/default8x16
ВНИМАНИЕ: к сожалению, консольный драйвер не способен сохранить это состояние (по крайней мере без излишних ухищрений), когда передается управление X Windows. Следовательно, после того, как вы вышли из X (или переключаетесь на консоль), то вы должны перезагрузить русский шрифт.
3.2 X Window
Подобно консольному режиму, X Windows также требует некоторой настройки. Настройка включает в себя настройку ввода и установку шрифтов для X Windows. Данные действия обсуждаются ниже.
Шрифты для X Windows.
Прежде всего вы должны достать шрифты, содержащие изображения кириллических символов в соответствующих местах.
В конце 1995 года X Window включила набор KOI8-R шрифтов разработанных KOI8-R fonts, created by Cronyx. Эти шрифты являются также частью XFree86.
Несмотря на это, некоторые дистрибутивы не включают кириллические шрифты для X Windows в стандартную поставку. Одним из подобных печальных примеров является RedHat (они обещали больше так не делать и исправить это в RedHat 5.2).
Поэтому, вам следует проверить установлены ли эти шрифты в вашей системе. Спросите системного администратора, или, если вы- это он и есть, проверьте вашу систему сами, а именно:
- Выполните '
xlsfonts | grep koi8
'. Если в результате выполнения команды появится список шрифтов, то ваш X сервер уже знает об их существовании. - Или, наберите
find / -name crox\*.pcf\*
для того чтобы найти местоположение шрифтов кириллицы в системе. Вы должны будете сделать эти шрифты доступными для X сервера, как - я объясню ниже.
Если вы не нашли таких шрифтов в вашей системе, то вы должны установить их сами.
Кроме описанного выше существует еще один набор кириллических
шрифтов Cronyx в сети (по адресу
ftp.kiae.su), известный, как пакет xrus
(не путать это с
программой xruskb
, ранее известной как xrus
.
Xrus
имеет меньший набор шрифтов чем в коллекции Xfree86
(38 против 68).
Имеется также более старое решение, например пакет vakufonts
созданный
Сергеем Вакуленко,
который стал основой для пакета включенного в дистрибутив X
Windows. Очень важно, что имена шрифтов в старой коллекции не
совпадают со стандартом полностью. Vakufonts
, в общем, неплохой пакет,
но иногда могут возникать различные сверхъестественные ошибки.
Например, у меня были проблемы с Maple V для Linux, который падал
по непонятным причинам с пакетом vakufonts
, но прекрасно
работал со "стандартными" набором.
Итак, давайте начнем со шрифтов:
- Вытащите по ftp соответствующий набор шрифтов. Пакет для
XFree86 можно найти на любом FTP архиве, где лежит дистрибутив X
Windows, например, непосредственно на
официальном XFree86 FTP архиве. Пользователи Redhat, у которых
отсутствует этот пакет могут заглянуть на
ftp.redhat.com,
чтобы вытянуть пакет
XFree86-cyrillic-fonts
. Установить его и сразу перейти к разделу, где объясняется как сделать местоположение шрифтов известным X Windows. - Теперь, когда у вас есть шрифты, создайте директорию для
них. Поместить новые шрифты в уже существующий каталог шрифтов,
мягко говоря, не очень хорошая идея. Поместите их, например, в
/usr/lib/X11/fonts/cyrillic
для настройки всей системы, или просто создайте каталог у себя только для персонального пользования. - Если новые шрифты поставляются в формате BDF (
*.bdf
файлы), то вы должны скомпилировать их. Для каждого шрифта выполните:bdftopcf -o <font>.pcf <font>.bdf
Если ваш X сервер поддерживает сжатые шрифты, то сожмите их с помощью программыcompress
(для последних версий XFree86 можно сжать шрифты с помощью программыgzip
):compress *.pcf (или gzip *.pcf)
Если же вы все-таки хотите поместить новые шрифты в уже существующий каталог шрифтов, то вы должны "срастить" старый и новые файлы, с именемfonts.alias
в том случае, естественно, если они оба существуют. - В каждом каталоге шрифтов для X должен быть список шрифтов,
находящихся в нем. Этот список хранится в файле
fonts.dir
. Вы не должны создавать этот список вручную. Вместо этого, сделайте:cd <new font directory> mkfontdir .
- Теперь Вы должны сделать этот каталог шрифтов известным для
X сервера. Здесь у вас есть ряд возможностей:
- Общесистемная настройка для XFree86. Если вы используете эту
версию X Windows, то добавьте новый каталог к списку каталогов в
файле
XF86Config
. Чтобы найти его расположение, просмотрите что скажетstartx
при запуске (В Redhat этот файл обычно находится в /etc/X11). Более подробно смотритеman XF86Config
(4/5). - Общесистемная настройка через
xinit
. Добавьте новый каталог к файлу запускаxinit
. Более подробно смотритеxinit(1x)
. - Персональная настройка. У вас есть специальный файл для запуска
X Windows -
~/.xinitrc
(или~/.Xclients
, или~/.xsession
для пользователей RedHat). Добавьте следующие команды в этот файл:
xset +fp <новый каталог шрифтов> xset fp rehash
Обратите внимание, на опцию '+fp
'- это означает, что новые шрифты будут добавлены в начале списка директорий со шрифтами. То есть, если прикладная программа запрашивает, скажем, шрифтfixed
, то будет подставлен fixed font с кириллическими символами , чего мы и добивались. Хотя имеются некоторые проблемы. В дистрибутиве шрифтов кириллицы нет полужирного и курсивногоfixed
шрифта. Мой любимый шрифт -6x13
, а так, как полужирные и курсивные шрифты этого размера также отсутствуют, то я не могу использовать Emacs/XEmacs в полной мере. Надеюсь, что кто - то в конечном счете создаст эти шрифты, и ситуация изменится. - Общесистемная настройка для XFree86. Если вы используете эту
версию X Windows, то добавьте новый каталог к списку каталогов в
файле
- А теперь перезапустите ваш X Windows. Если вы все сделали
правильно, то тесты, описанные в начале раздела, будут пройдены успешно.
Также, поиграйтесь с
xfontsel(1x)
, чтобы удостовериться что вы способны выбрать шрифты кириллицы.
Чтобы заставить X клиента использовать шрифты Кириллицы, Вы
должны установить соответствующие X ресурс. Например, я делаю
кириллический шрифт заданным по умолчанию в моем ~/.Xdefaults
:
*font: 6x13
Так как мои шрифты кириллицы первые в списке поиска шрифтов (смотри
вывод программы 'xset q
'), то
они и подставляются если программа требует какой-либо шрифт с
именем, совпадающем с каким-либо из шрифтов, лежащих в кириллической
директории.
Вот простые примеры. Если Вы хотите научить соответствующий X
клиент пользоваться кириллическим шрифтом , то вы должны узнать
тип ресурса , который вам надо изменить (можно это сделать
используя editres(1x)
) и определить его или в базе данных
ресурсов, или в командной строке. Например можно сделать так:
$ xterm -font '-cronyx-*-bold-*-*-*-19-*-*-*-*-*-*-*'
...запусти xterm с несколько уродливым шрифтом;
$ xfontsel -xrm '*quitButton.font: -*-times-*-*-*-*-13-*-*-*-*-*-koi8-*'
...установит Cyrillic Times шрифт для кнопки Quit
программы
xfontsel
.
Использование шрифтов TrueType
У технологии TrueType, взятой на вооружение операционными системами серии Windows (он же Mastdie :)), нет многих недостатков, которые присутствуют при работе со шрифтами стандартным образом у X. Кроме того существует множество кириллических TrueType шрифтов.
К счастью, эти шрифты можно использовать и в X Windows. Существует TrueType сервер шрифтов XFSFT для X (говорят, что в скором времени поддержка TrueType будет включена в дистрибутив XFree86).
Установочная процедура довольно проста - просто, делайте то, что сказано в документации. Следует отметить одну вещь, имеющую отношение к кириллической настройке, это то, что вам следует использовать опцию перекодировки:
xfstt ... --encoding koi8-r,windows-1251,iso8859-1
После этого, новые шрифты будут доступны для X Windows - этот факт вы
можете проверить, запустив xfontsel
и поиграв с ttf семейством
шрифтов.
Ввод с клавиатуры
В последних выпусках X (X11R61 и выше) имеются два
"стандартных" способа ввода с клавиатуры: родной способ,
работающий через утилиту xmodmap
, и новый, называемый Xkb
(X KeyBoard). Первое, что вы должны сделать, это отключить Xkb способ!.
Не давайте себя загипнотизировать его способностью устанавливать
"russian keyboard". Этот способ, вроде бы, использует описание
символов кириллицы определенных в keysymdef.h
. Этот файл
определяет символы для многих языков. Единственная проблема
состоит в том, что данное определения не позволяют, работать с
расширенной ASCII кодовой страницей - очень много программ могут работать
только с этой раскладкой! Я почти не знаю программ, которые
разбираются с описанием символов в keysymdef.h
отличным от
стандартного 8ми битного ASCII. Однако, наша главная цель состоит
в том, чтобы заставить работать поддержку KOI8-R. (Примечание
переводчика: здесь автор немного погорячился - Xkb вполне
рабочий способ, правда способность работать с KOI8-R он обнаружил
только в последних версия XFree86. Пользователям Redhat следует
взять версию XFree86-3.3.3-1.)
Чтобы отключить поддержку Xkb
, в файле XF86Config
изучите раздел Keyboard
и закоментируйте, все строки,
начинающиеся с Xkb (регистр не имеет значения).
Взамен, добавьте следующую строку:
XkbDisable
Программа xmodmap
позволяет настроить коды соответствующие
различными символам и их комбинациям. Эта настройка основана на
файле, содержащем таблицу перекодировки.
В предыдущих версиях этого документа я очень подробно описывал
настройку кириллицы основанную на xmodmap
. Это оказалось
практически бесполезным. Общеизвестно, что способ перекодировка
ввода, основанный на xmodmap
, является, не-портабельным, плохо
настраиваемым, и не окончательным. Ваши настройки могут работать
с одной версией XFree и сбоить при работе с другой. Более того,
иногда результат работы одной и той же настройки сильно разнится
для различных серверов из одного дистрибутива.
Я настоятельно советую вам не играть с xmodmap
, по крайней мере
для начала. Вы не получите ничего кроме головной боли и
разочарования. Вместо этого, я рекомендую вам установить пакет
xruskb,
который позволяет вам сконфигурировать большинство
входных параметров перекодировки без необходимости сталкиваться с
xmodmap
. Опять же пользователи Redhat Linux могут установить
RPM пакет этого програмного продукта.
3.3 Первые шаги - кириллизация shell
bash
Для того, чтобы заставить bash понять 8ми битные символы,
должны быть установлены три переменные. Лучше всего это
сделать из файл ~/.inputrc
.
Должны быть сделаны следующие установки:
set meta-flag on set convert-meta off set output-meta on
csh/tcsh
Поместите в .cshrc
следующее:
setenv LC_CTYPE iso_8859_5 stty pass8
Если у вас нет POSIX совместимого stty (только не в Linux), замените последнюю строчку следующей:
stty -istrip cs8
ksh
Что касается public domain реализации ksh
- pdksh
версии 5.1.3 и выше, то вы можете разрешить 8ми разрядный ввод
только для vi
в режиме ввода. Для этого используйте:
set -o vi
less
Установите переменную окружения LESSCHARSET
:
export LESSCHARSET=koi8-r
Старые версии less
не поддерживали символы KOI8-R, но установка
следующей системной переменной позволяла это обойти:
export LESSCHARSET=latin1
mc (The Midnight Commander)
Чтобы разобрать текст кириллицы , выберите опцию full 8 bits
в
Options/Display
меню.
Если у вас проблемы в виде уродливых оконных рамок, то проконсультируйтесь в разделе Linux консоль.
off-topic: если вы захотите чтобы mc
в окне Xterm
был в цвете:
установите переменную COLORTERM
:
COLORTERM= ; export COLORTERM
rlogin
Удостоверитесь, что shell на месте адресата правильно
установлена. Если ваш rlogin
не работает как надо по умолчанию,
то используйте 'rlogin -8
'.
zsh
Сделайте то же самое, что делается для csh
(
csh). Файл инициализации в этом случае - .zshrc
или
/etc/zshrc
.
Next Previous Contents