Localization (русский)

Warning Message

The warning message during the installation of Perl applications will appear as follows:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

This problem may arise when packages are being added. The following example will show a corresponding output:

8000050000:~# apt-get install multipath-tools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  dmsetup kpartx libaio1
Suggested packages:
  multipath-tools-boot
The following NEW packages will be installed:
  dmsetup kpartx libaio1 multipath-tools
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 266kB of archives.
After this operation, 950kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://ftp.de.debian.org lenny/main dmsetup 2:1.02.27-4 
Get:2 http://ftp.de.debian.org lenny/main kpartx 0.4.8-14+lenny2 
Get:3 http://ftp.de.debian.org lenny/main libaio1 0.3.107-3 
Get:4 http://ftp.de.debian.org lenny/main multipath-tools 0.4.8-14+lenny2 
Fetched 266kB in 1s (154kB/s)           
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Selecting previously deselected package dmsetup.
(Reading database ... 27499 files and directories currently installed.)
Unpacking dmsetup (from .../dmsetup_2%3a1.02.27-4_amd64.deb) ...
Selecting previously deselected package kpartx.
Unpacking kpartx (from .../kpartx_0.4.8-14+lenny2_amd64.deb) ...
Selecting previously deselected package libaio1.
Unpacking libaio1 (from .../libaio1_0.3.107-3_amd64.deb) ...
Selecting previously deselected package multipath-tools.
Unpacking multipath-tools (from .../multipath-tools_0.4.8-14+lenny2_amd64.deb) ...
Processing triggers for man-db ...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/usr/bin/mandb: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
manconv: can't set the locale; make sure $LC_* and $LANG are correct
Setting up dmsetup (2:1.02.27-4) ...
Setting up kpartx (0.4.8-14+lenny2) ...
Setting up libaio1 (0.3.107-3) ...
Setting up multipath-tools (0.4.8-14+lenny2) ...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Starting multipath daemon: multipathd.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "en_US.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
8000050000:~# 

3.12 Как cмонтировать диск, чтобы русские имена файлов были видны ?

Для vfat примерно так (cтрочка из /etc/fstab/):

/dev/hda5 /mnt/d vfat noexec,rw,umask=002,codepage=866,iocharset=utf-8,gid=100 0 0

Потом mount /mnt/d.
Еще в ядро (>=2.0.36) должны быть включены соответствующие кодовые страницы
(возможно, в виде модулей /lib/modules/`uname -r`/fs/nls_*) — CP866 и KOI8-R,
так что возможно (хотя скорее всего нет) ядро придется перекомпилировать.

Для CD, содержащего файлы с русскими именами:

$ mount -t iso9660 -o iocharset=utf-8  /dev/cdrom  /mnt/cdrom

Смысл этих опций можно узнать в ‘man mount’ или в документации исходников
ядра /usr/src/linux/Documentation/filesystems/ или
/usr/doc/kernel/filesystems/

11.2 интернационализация

В то время как локализация описывает как адаптировать
программу к иностранному окружению, интернационализация (или i18n
для краткости) детализирует способы общения программы с
не-англоговорящим пользователем.

Прежде это делалось с помощью создания абстракций сообщений
для вывода их из кода программы. Теперь такой механизм (более
или менее) стандартизирован. И, конечно, есть его free
реализации!

Проект GNU, наконец, стал на путь создания
интернационализированных прикладных программ. Ulrich Drepper
() разработал пакет .
Этот пакет лежит во всех GNU архивах, например, в
prep.ai.mit.edu.
Он позволяет вам разрабатывать программы в направлении, двигаясь
в котором вы можете легко заставить их поддерживать большее
количество языков. Я не предполагаю описывать методы
программирования еще и потому, что пакет поставляется с
превосходным руководством.

Просьба о сотрудничестве: Если вы хотите изучить пакет
и сделать свой вклад в проект GNU или просто сделать вклад без
всякого изучения, то вы можете сделать это! GNU становится
международным, так что все утилиты делаются locale зависимыми.
Проблема состоит в том, чтобы переводить сообщения с Английского
языка на Русский (и другие языки, конечно если захотите). В
общем, что следует сделать: вы должны получить специальный
файл, состоящий из Английских сообщений для неких утилит, и
связать каждое сообщение с его эквивалентом на русском. В конечном
счете, это заставит говорить систему по-русски, если пользователь
захочет этого! Для для подробностей войдите в контакт с Ulrich
Drepper (
[email protected]).

NextPrevious

Changing your locale manually

Editing the locale file is very easy. You can use your favorite text editor to edit the  file. If this file does not exist, then no locale is currently set for your system. You can create one manually and enable a locale for your system. The output below shows how the file should look like:

cat /etc/default/locale
#  File generated by update-locale
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

Replace with the locale you wish to have active on your system and save the file. Once you save the file, log out from your current session and then log back in, or open a new terminal, and your newly chosen locale will be active.

NOTE: This example file only sets the variable for your system, which covers the locale for all parts of the system.

3.4 Как настроить locale ? Я установил LANG, но русских дат нет.

Прежде всего — подробная дока о locale имеется на
http://www.sensi.org/~alec/locale.
Обращайтесь туда, если вам нужны нестандартные варианты (например,
отключение русскоязычного интерфейса с сохранением правильной сортировки и т.д.)

Система X-Window и библиотеки Xlib и Xt имеют собственные механизмы
локализации (XLC_LOCALE) которые являются «надстройкой» над системной
locale. Подробности:
{X11Root}/doc/i18n (в RedHat: /usr/share/Xfree86-doc/i18n). Документация
в .PS
http://www.tsu.ru/~pascal/x_locale/.

Хотя в принципе допустимо задавать короткое именование, вроде
LANG=ru_RU или даже LANG=ru, лучше использовать _полное_
имя : LANG=ru_RU.KOI8-R . Совершенно недопустимо задавать
LANG=ru_SU, такой страны больше нет :-)

К сожалению, не все дистрибутивы «от рождения» позволяют
использовать ru_RU.KOI8-R . Воспользуйтесь ‘locale -a’ для
получения списка допустимых значений. Если в списке нет
значения ru_RU.KOI8-R, его нужно добавить, а то LANG=
будет указывать «в пустоту» :

$ localedef -c -i ru_RU -f KOI8-R ru_RU.KOI8-R
Computing table size for character classes might take a while... done
Computing table size for collation information might take a while... done
$
$ cd /usr/lib/locale
$ mv ru_RU.koi8r ru_RU.KOI8-R

NB! Утилита localedef фомирует «сжатое» (mangled) имя кодировки,
так что имя превращается в «ru_RU.koi8r». Это приводит в замешательство
некоторые программы. Но к счастью, все же можно установить
полное имя LANG=»ru_RU.KOI8-R» и благодаря mangling-у все будет
работать и программы будут счастливы. Еще один вариант — переименовать
каталог.

Некоторые дистрибутивы неправильно включают

LANG=ru
LC_ALL=ru_RU.KOI8-R

http://www.sensi.org/~alec/locale/

Установка локали

Чтобы отобразить текущую локаль и связанные с ней переменные окружения, наберите:

$ locale

Используемая локаль, выбранная среди сгенерированных в системе, устанавливается в файлах , каждый из которых должен содержать список переменных окружения в том же формате, в каком их выводит команда locale.

Чтобы посмотреть список доступных ранее сгенерированных локалей, выполните:

$ localedef --list-archive

Также можно использовать :

$ localectl list-locales

Установка системной локали

Системная локаль устанавливается с помощью переменной LANG в файле /etc/locale.conf. Значением должен быть первый столбец из раскомментированной записи в /etc/locale.gen:

/etc/locale.conf
LANG=ru_RU.UTF-8

Вы можете установить ее также при помощи localectl:

# localectl set-locale LANG=ru_RU.UTF-8

Подробнее смотрите and .

Совет: Во время установки системы, если вас устраивает вывод команды locale, вы можете просто сохранить его в файл командой (в сеансе arch-chroot).

Переопределение системной локали в пользовательском сеансе

Системная локаль может переопределяться в каждом пользовательском сеансе с помощью файла ~/.config/locale.conf (или, в общем случае, $XDG_CONFIG_HOME/locale.conf либо $HOME/.config/locale.conf).

Совет:
  • Это позволяет вести системные логи в на английском, при использовании местного языке в рабочей среде пользователя.
  • Вы можете создать файл , тогда для всех новых пользователей, добавленных командой useradd с опцией сразу будет автоматически сгенерирован файл .

Немедленное применение изменений локали

После внесения изменений в файлы , они вступят в силу после перезагрузки системы, и для отдельных сеансов пользователей — при входе. Чтобы принудительно обновить локаль в текущем окружении без перезагрузки, выполните:

$ unset LANG
$ source /etc/profile.d/locale.sh

Примечание: Переменную нужно обязательно сбросить, иначе не обновит значения из . Будут обновлены только новые и изменённые переменные; те же, что были удалены из файла , по-прежнему останутся в текущем сеансе.

Дополнительно

Переменные окружения настроек локали могут также быть установлены обычным способом, как указано на странице переменные окружения.

Например, чтобы проверить, как работает конкретное приложение с какой-нибудь локалью, вы можете запустить его следующим образом:

$ LANG=С ./my_application.sh

Аналогично, для установки локали всем процессам, запускаемом из текущей командной оболочки (например, в процессе установки системы):

$ export LANG=C

3.11 * Как сделать так, чтобы в X Window русские буквы вводились везде ?

Существует два основных способа русификации клавиатуры X :

  • XKB, применяющийся в современном X11R6
  • xmodmap, применявшийся в X11R5
Section "Keyboard"
        ...
        XkbRules "xfree86"
        XkbModel "pc101"
        XkbLayout "ru"
        XkbOptions "grp:shift_toggle"
EndSection
Section "InputDevice"
        ...
        Driver "keyboard"
        Option "XkbRules" "xfree86"
        Option "XkbModel" "pc101"
        Option "XkbLayout" "ru"
        Option "XkbOptions" "grp:shift_toggle"
EndSection
grp:toggle             правый Alt (с "фиксацией")
grp:caps_toggle        Caps_Lock
grp:shift_toggle       два Shift
grp:ctrl_shift_toggle  Control+Shift
grp:ctrl_alt_toggle    Control+Alt
grp:alt_shift_toggle   Alt+Shift
grp:menu_toggle        Menu (модель должна быть pc104, pc105)
Section "InputDevice"
Identifier "Keyboard0"
Driver "Keyboard"
Option "AutoRepeat" "500 30"
Option "XkbModel" "microsoft"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:ctrl_shift_toggle"
EndSection
$ setxkbmap -layout 'us,ru(winkeys)' -model microsoft -option grp:ctrl_shift_toggle

Если есть проблемы с XKB, прочтите
http://www.tsu.ru/~pascal/other/xkb/
Там же есть ссылки на «переключатели клавиатуры», например xxkb, описание, как использовать несколько раскладок одновременно, назначать клавиши переключения раскладок и много других интересных вещей.

Наиболее развитая программа для переключения клавиатуры через
способ xmodmap : xruskb от
Alexander V. Lukaynov

ftp://ftp.yars.free.net/pub/software/unix/X11/ (primary site)

Она может понадобиться для русификации X11R5 терминалов,
например железных, или эмуляторов под MS Windows. Для ее применения
с XFree86 лучше отключить модуль XKB в /etc/X11/XF86Config
директивой XkbDisable. Правильная раскладка для xruskb:
jcukeng-cyr.xmm

Проверить русификацию X можно программой xev: клавиатура должна
генерировать правильные XkeySym для кириллицы (0x6xx), а xev
должна показывать Cyrillic_IE и пр. при нажатии русских букв, а не
OCyrcumflex e.t.c.

13.4 Debian

Этот раздел посвящён кириллизации Debian 2.2. Если какие-либо
действия надо совершить для младших версий этого дистрибутива — это
будет отмечено особо.

Настройка русской локали

В файле .
Исправьте на .
В этом случае у всех пользователей включая root сообщения будут выводиться на русском языке и они смогут вводить русские буквы.

Опционально:
Для root выдача сообщений на русском не слишком удобна,
поэтому добавляем в следующие строки:

LC_TIME=C; export LC_TIME
LC_MESSAGES=C; export LC_MESSAGES

Если версия вашего дистрибутива меньше 2.2, то дополнительно
выполните команду

      # mv /usr/share/locale/ru_SU /usr/share/locale/ru_RU.KOI8-R

Зачем же мы удаляем ru_SU и делаем локаль с таким большим именем?
Все потому, что SU — это сокращение страны Судан, а эта локаль предназначена
для людей из России, говорящих по-русски. Можно было бы оставить ru_RU,
скажете вы. Но ru_RU уже существует, это локаль с кодировкой ISO-8859-5.
Поэтому следует поставить ru_RU.KOI8-R.

Русификация текстового режима.

Если в системе все ещё инсталлирован пакет , то замените его на
. Вставьте в :

SCREEN_FONT=Cyr_a8x16
APP_CHARSET_MAP=koi2alt.trans

Выполните команду

cp /usr/share/keymaps/i386/qwerty/ru1.kmap.gz /etc/console-tools/default.kmap.gz

с привилегиями пользователя root.

Первый вопрос, который возникает — зачем грузить какой-то APP_CHARSET_MAP?
Действительно, если загрузить шрифт KOI8-R, то можно будет не
грузить карту перекодировки (APP_CHARSET_MAP). В
этом случае вместо символов псевдографики будут появляться русские
буквы ‘Д’, а иногда даже ‘YO’. Чтобы побороть это, можно сделать свой
тип терминала (в debian есть linux-koi8). Но гораздо проще и
грамотнее поставить шрифты и
включить таблицу перекодировки. Последний шаг — копирование карты
клавиатуры. ru1 рассчитана на 101-кнопочную клавиатуру
без MicroSoft’овских клавиш и переключение по правому Alt.

Если версия вашего дистрибутива меньше 2.2, то вместо
вам придётся воспользоваться
пакетом — в этом случае настройки будут следующие:

Вставьте в :

      CONSOLE_FONT=Cyr_a8x16
      CONSOLE_MAP=koi2alt.

А так же необходимо добавить следующие строки для
использования русских шрифтов и маппинга на всех виртуальных консолях:

SCREEN_FONT_vc1=Cyr_a8x16
SCREEN_FONT_vc2=Cyr_a8x16
...
SCREEN_FONT_vc6=Cyr_a8x16
APP_CHARSET_MAPvc1=koi2alt.trans
APP_CHARSET_MAPvc2=koi2alt.trans
...
APP_CHARSET_MAPvc6=koi2alt.trans
 

Выполните команды:

      # cd /etc/console-tools
      # mv default.kmap.gz default.kmap.gz.orig
      # ln -s /usr/share/keymaps/i386/qwerty/ru1.kmap.gz default.kmap.gz

с привилегиями пользователя root.

Русификация X Window System

Установите пакет xfonts-cyrillic со второго CD. Затем выполните команду

     # ln -s /usr/X11R6/lib/X11/fonts/cyrillic /usr/X11R6/lib/X11/fonts/local

Теперь загрузите XF86Setup и скажите, что хотите
клавиатуру. Если вы не хотите
пользоваться xdm, то в измените
на
(Вместо правки /etc/inittab лучше поправить /etc/rc2.d/:
переместить из этой директории куда-нибудь в созданную /usr/local/sys-bakup
линк на /etc/init.d/xdm (S99xdm)).

Если же вы хотите воспользоваться xdm, то,
вам надо будет вставить строчку

      . /etc/environment
      export LANG

в начале инициализационного сценария xdm ().
Затем в файле в конце вставьте строчку

      DisplayManager.exportList:      LANG

Зачем создавать символическую ссылку на
? Дело в том, что
XF86Setup, если видит каталог
, то ставит его на первое место
в секции «Files»  файла .

Зачем делать
такие сложные выкрутасы с xdm? Чтобы xdm воспринял русскую локаль.

Если вы хотите установить шрифты Cyr-RFX-koi8-ru (См. раздел

— для кириллицы отличной
от русской), то у вас возникнут проблемы с приложениями gtk —
как с эти бороться описано в разделе
).

3.1 Настройка текстовой моды

Вообще, настройка текстовых режимов — самый простой способ показывать и
вводить символы кириллицы. Однако, имеется одно значительное осложнение:
текстовые шрифты и расположение символов на клавиатуре зависят от реализации
драйвера терминала. Следовательно, не имеется никакого общего способа для
достижения цели в различных систем.

Ниже, я опишу способ как «справиться» с драйвером Linux консоли. Поэтому если
вы имеете другую систему, не ожидайте, что это будет работать. Взамен,
проконсультируйтесь с руководством по драйверу терминала и пошлите мне любую
информацию, которую вы найдете. В этом случае я смогу включить это в дальнейшие
версии этого документа.

Linux консоль

Консольный драйвер Linux — довольно хорошо настраиваемый образец программного
обеспечения. Он может менять как шрифты, так и раскладки клавиатуры. Чтобы
сделать это, вам нужен пакет kbd. Большинство
дистрибутивов Linux устанавливают kbd как обязательную часть системы.

Пакет kbd содержит утилиты управления клавиатурой, кроме этого с ним
поставляется широкий выбор шрифтов и раскладок.

Установка кириллицы с помощью обычно состоит из:

Загрузки соответствующей раскладки клавиатуры, с помощью программы
. Redhat позволяет установить раскладку клавиатуры,
которую система загружает по умолчанию во время загрузки. Это конфигурируется
с помощью программы . Или вы просто можете
запустить из вашего или сделав
это руками.

Настройки экранного шрифта. Это делается с помощью программы
. Файлы шрифтов находятся в

ВНИМАНИЕ: В старых версиях
Linux, запуск программы под X Windows мог завесить
систему. Сейчас в этом случае печатается сообщение об ошибке

Если вы являетесь приверженцем программ, выполняемых в текстовой моде, и
использующих достоинства PC псевдо — графики (таких как Midnight Commander), вы
можите предпочесть использовать шрифты с кодировкой и
консольной раскладкой (console character map). Это означает, что ваша
консоль отображает Alt шрифты, но все кириллические символы, соответствующие
KOI-8R кодировки соответственным образом отображаются в
и поэтому отображаются правильно. Преимущество этого метода заключается в том,
что он позволяет использовать псевдографические символы
кодировки.

Короче, ниже перечислены команды, которые позволяют достичь этого эффекта.

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 (смотрите ниже этот шаг необходим), перегрузите
его, затем нажмите правую клавишу . Удостоверитесь, что вы
можите печатать на русском правильно. Клавиша » должна
соответствовать «», » соответствует
«», и т.д.

Если у вас возникли непредвиденные проблемы, то лучше всего вернуться к
родной (то есть US) раскладке. Для этого сделайте следующие телодвижения:

loadkeys /usr/lib/kbd/keytables/defkeymap.map
setfont /usr/lib/kbd/consolefonts/default8x16

ВНИМАНИЕ: к сожалению, консольный драйвер не способен сохранить это
состояние (по крайней мере без излишних ухищрений), когда передается управление
X Windows. Следовательно, после того, как вы вышли из X (или переключаетесь на
консоль), то вы должны перезагрузить русский шрифт

3.33 Как мне заставить приложение для иксов использовать шрифты с koi8-r, а не iso8859-1 ?

a) Постарайтесь выяснить, откуда приложение берет имя фонта.
Чаще всего приложение хранит имена используемых фонтов в «базе ресурсов»: в
персональной  /.Xdefaults или системной /usr/X11R6/lib/X11/app-defaults/ базе.
Имена используемых фонтов хранится в форме XLFD, т.е. там можно применять «*».
Например:

Посмотреть «ресурсы» приложения можно утилитой appres :

В man практически на любую X программу имеется секция RESOURCES.

Если программа написана с применением какого-либо «Toolkit»-а : GTK, Qt,
Motif, e.t.c., чаще всего достаточно русифицировать Toolkit. Русификация
GNOME/Gtk и Qt таким способом описана чуть ниже.

b) С помощью ключа -fn font или -font font. Этот ключ обрабатывается в XLIB и
он скорее всего будет работать в любой X программе.

c) Метод грубого хака.
Нужно взять русские шрифты с
ftp://ftp.relcom.ru/pub/x11/cyrillic/fonts/,
там есть шрифты adobe-*-koi8-1 (c fonts.alias, делающим из них -iso8859-1), но
реально содержащие кириллицу в koi8-r в старшей половине.

При этом шрифты с теми же именами и «настоящими» символами iso8859-1 становятся
недоступны. Стандартных шрифтов из XFree86-cyrillic-fonts недостаточно.
Кроме того, пути к русским шрифтам в конфиге иксов или фонт-сервера должны быть
впереди всех прочих.

Однако лучше не использовать этот метод, а написать автору программы
(или прислать ему patch ;) для вынесения имени фонта в «ресурс».

3.2 Русификация консоли.

В системе Linux существуют два конкурирующих пакета
управления шрифтами и клавиатурой : kbd и consoletools.

ftp://ftp.win.tue.nl/pub/linux/utils/kbd/ или
ftp://ftp.kernel.org/pub/linux/utils/kbd/

В разных дистрибутивах применяются или один, или другой.
Например, в Red Hat 4.х и 5.x для русификации консоли применялся
пакет kbd. Однако в Red Hat 6.x и выше применяется уже другой пакет —
consoletools.

Существует Keyboard-and-Console-HOWTO, автор этого HOWTO
является также автором пакета kbd, поэтому естественно, всех
склоняет к использованию kbd. ;-)
http://linuxdoc.org/HOWTO/Keyboard-and-Console-HOWTO.html

На «низком уровне» для русификации консоли достаточно выполнить
следующие команды (пакет kbd):

Если используется пакет console-tools:

См. man на соответствующие команды и ‘man console_codes’.
Описание, что есть что, у console-tools в /usr/doc/console-tools*,
довольно внятное.

NB! К сожалению, в пакете console-tools некоторые русские фонты не содержат
UNICODE screen-font map (SFM) и в таком виде попадают во многие дистрибутивы.
Исправленные фонты живут в пакете console-tools-cyrillic:
ftp://ftp.ice.ru/pub/fonts/linux/

Как правило, настройка шрифтов и клавиатуры скрыта среди стартовых
скриптов, а ключевые управляющие параметры вынесены в отдельные
файлики. Иногда существуют даже специальные программы настройки.
«Идеологически правильно» не нарушать системную архитектуру
дистрибутива, а всего лишь поменять настройки в этих файликах.

К сожалению, в Linux только один загружаемый фонт на все
виртуальные консоли.

Если вы хотите видеть русские буквы и рамки (например в mc) на
консоли одновременно, используйте только TERM=linux .

У вас будут проблемы при работе консоли в CP-866 из-за того,
что некоторые русские буквы в этой кодировке совпадают со
«старшими» управляющими кодами C1, например буква
«Ы» 0x9B совпадает со старшим ESC (CSI). Работайте в KOI8-R.

3.6 Я настроил locale и русский в консоли, но bash все равно не вводит русские буквы, пищит.

Хотя для большинства программ вполне достаточно установки
LANG=ru_RU.KOI8-R чтобы начать распознавать русские буквы, многие
программы, основанные на библиотеке readline (например bash), все равно считают
символы с кодами больше 128 особыми META-символами (пищит при вводе).

Чтобы отучить библиотеку readline от этого, необходимо определить
переменную

Кроме того, создать файл /etc/inputrc

После этого библиотека readline (и bash) начнет воспринимать русские буквы.

Еще один вариант : Не задавать INPUTRC=, а прописать те же значения в файл
~/.inputrc (в home-каталоге). Но тогда придется заводить такой файл в
домашнем каталоге каждого пользователя.

См. man readline.

3.10 Как установить русские фонты KOI8-R на XFree86 ?

В современных дистрибутивах они скорее всего уже стоят.
Первым делом (на работающем X сервере) запустите :

Если список не пустой — примите наши поздравления :-)

Начиная с версии XFree86 3.3.2 русские фонты cronyx-*
входят прямо в дистрибутив XFree. Если фонтов нет — их нужно
установить. Для Red Hat просто поставьте пакет
XFree86-cyrillic-fonts-XXXX.rpm . Фонты установятся в
/usr/X11R6/lib/X11/fonts/cyrillic .

Далее нужно подключить шрифты к X Window.
Убедитесь, что в файле /etc/X11/XF86Config прописан
путь :

Путь с cyrillic лучше всего поставить первым. Перезапустите
X сервер и проверьте командой : xlsfonts -fn «*-koi8-r» .

Еще см. вопрос «Где найти хорошие русские шрифты для иксов?»
Про подключение шрифтов TrueType также имеется отдельный ответ, в
разделе про X Window.

Хорошим решением также будет использование фонт-сервера.
Во-первых, он может быть один на всю организацию, а во-вторых
в современные фонт-серверах можно использовать шрифты
TrueType. Для Red Hat фонт-сервер xfsft входит в пакет
XFree86-xfs.

Удаленный доступ к консоли

Устанавливаем ssh: — комплекс программ, позволяющих соединяться с удалёнными машинами по защищённому каналу и выполнять команды в консоли:

# aptitude install ssh

Этот метапакет содержит программу клиента ssh и службу sshd, обрабатывающую входящие ssh подключения к вашему компьютеру.

Авторизация по ключам

Генерация ключей

Вариaнт 1 (подходит для putty и native ssh клиентов Linux)

Выбираем пользователя на сервере под которым будем логиниться в ssh. Например это будет «user». Входим с его правами в консоль. Далее генерируем ключи, при желании указываем пароль на создаваемый ключ.

ssh-keygen -t rsa -b 2048 -C "комментрий к ключу" -f /user/.ssh/newserver.key

В итоге получаем в «/user/.ssh/» два файла «newserver.key» и «newserver.key.pub»

Вариaнт 2 (для всех + проприетарный Bitvise Tunnelier)

К сожалению, я не нашёл способа сконвертировать OpenSSH ключи в понятный Tunnelier-у формат. Поэтому действовать будем от обратного.

На Windows машине запускаем Bitvise Tunnelier. На вклaдке «Login» выбираем раздел «Authentickation» —> «Use keypair manager». В новом окне жмём «Generate New …», выставляем опции на свой вкус —> «Generate». Далее выбираем «Export» и сохраняем любым удобным способом публичный ключ в формате OpenSSH в файл /user/.ssh/newserver.key.pub на ssh сервере.

Для использования в других ssh клиентах аналогично экспортируем и закрытый ключ. В итоге получаем в «/user/.ssh/» два файла «newserver.key» и «newserver.key.pub»

Настройка сервера

Перемещаем открытый ключ в список разрешённых ключей Например так

mv /user/.ssh/newserver.key.pub /user/.ssh/authorized_keys

Правим конфигурацию сервера

nano /etc/ssh/sshd_config

# Разрешаем авторизацию по парам ключей
PubkeyAuthentication yes
# Путь к списку отпечатков открытых ключей
AuthorizedKeysFile      %h/.ssh/authorized_keys

Проверяем права доступа, должно быть так

root@gtw:~# ls -g .ssh
итого 4
-rw------- 1 root 392 Мар 24 20:03 authorized_keys

Если права доступа отличаются, то выставляем правильные:

chmod 600 -R .ssh && chown root:root .ssh/authorized_keys

Перезапускаем сервер

/etc/init.d/ssh restart

При появлении проблем доступа смотрим лог

cat /var/log/auth.log | tail

Настройка клиента

Выбираем пользователя на клиенте под которым будем логиниться в ssh. Например это будет «user». Логинимся по юзером. Любым удобным способом копируем сгенерированный ранее файл newserver.key в папку /home/user/.ssh. Если хочется, чтобы ssh клиент подхватывал ключ автоматически, сохраняем ключ с новыми именем «id_dsa»

Выставляем права доступа, иначе ssh клиент проигнорирует ключ.

cd /home/user
chmod 700 ./.ssh
chmod 600 ./.ssh/newserver.key

Запускаем ssh клиента.

ssh -i /home/user/.ssh/newserver.key [email protected]

Всё должно работать.

Настройка Putty

К сожалению, Putty не понимает ключи в формате OpenSSH. Поэтому загружаем latest development snapshot Puttygen. Обычный Puttygen нам не подойдёт.

Скармливаем проге наш newserver.key (Conversions —> Import key), если нужно вводим пароль для доступа ключу. Получаем окно

Если надо меняем комментарий и пароль доступа к ключу. В разделе «Parameters» рекомендую выбрать SSH-2 RSA и 2048 bits. Далее жмём «Save private key» и получаем ключ в формате ppk, пригодный для скармливания обычному Putty в разделе Сonnection —> SSH —> Auth

nano /etc/ssh/sshd_config

#Запрещаем вход под root
PermitRootLogin no
# Меняем порт по умолчанию - может помочь против поверхностного сканирования портов
Port 17854
# Указываем на каком IP слушать порт
ListenAddress 192.168.0.1
# Запрещаем вход по паролям, усложняет брутфорс
PasswordAuthentication no
# Запрещаем пустые пароли
PermitEmptyPasswords no
# Только root может авторизоваться по ssh
AllowUsers root
# Меняем стандартный порт, но мне больше нравится реализовывать это через port mapping
# Port 4422

Сессии в консоли

Screen

Устанавливаем screen: — утилиту-мультиплексор, предоставляющую пользователю доступ к нескольким консолям в рамках одной сессии.:

# aptitude install screen

Далее настраиваем:

nano /etc/screenrc

# Отключаем приветствие
startup_message off
# Производить отключение сессии при разрыве связи с терминалом
autodetach on
# Включаем строку состояния
hardstatus on
# Параметры строки состояния
hardstatus alwayslastline "%{+b wk} %c $LOGNAME@%H %= "

или одной командой:

sed -i 's/^#startup_message.*/startup_message off/; s/^#autodetach.*/autodetach on/; s/^hardstatus off.*/hardstatus on/; s/^hardstatus string.*/hardstatus alwayslastline "%{+b wk} %c $LOGNAME@%H %= "/' /etc/screenrc
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: