URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 78265
[ Назад ]

Исходное сообщение
"Руссификация консоли Red Hat 9"

Отправлено toris0 , 16-Янв-08 07:55 
Пытаюсь руссуфицировать консоль Red Hat 9, который изначально устанавливал без поддержки русского языка. После прочтения большого количества документаций пришёл к следующему скрипту:
#!/bin/sh
if [ notset.$DISPLAY != notset. ]; then
echo "Welcome to xterm"
else
  if [ $TERM = xterm ]; then
   echo "Welcome to xterm"
   else
    loadkeys /lib/kbd/keymaps/i386/qwerty/ru4.map.gz
    setfont /lib/kbd/consolefonts/Cyr_a8x16.psfu.gz
    mapscrn /lib/kbd/consoletrans/koi2alt
    echo -ne "\033(K"
    echo "Use the CapsLock key to swith ..."
  fi
fi

export LANG=ru_RU.KOI8-R
export LC_ALL=ru_RU.KOI8-R
export NLSPATH=/usr/share/locale/ru_RU
export LESSCHARSET=koi8-r
export LC_CTYPE=ru_RU.KOI8-R
export LC_NUMERIC=POSIX
export COLORTERM=
export TERTMINFO=/usr/lib/terminfo
# For Russian GostScript
export GS_OPTIONS=-dNOPLATFONTS
export GS_PATH=/usr/share/gostscript/fonts

export SUPPORTED=ru_RU.KOI8-R:ru_RU.koi8r:ru_RU:ru
export SYSFONT=cyr-sun16
export SYSFONTACM=koi8-u
export KEYBOARDTYPE=pc
export KEYTABLE=ru-ms # здесь пробовал писать ru4

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

Пезультат получается очень интересный. Если просто заходишь в консоль и переключаешься на кусскую раскладку, то можно писать русскими буквами. Можно создать файл с русским именем (touch вася), но когда делаешь ls, файл отображается вопросиками...
Когда заходишь в mc, то файлы с русскими именами не отображаются (режим 8 bit включен. кодировка выбрана koi8-r). при попытке печатать по русски что-то набирается, курсор двигается, но буквы сами не отображаются. После нажатия Ctrl+O в mc, выполнив команду ls можно увидеть файлы с русскими именами и если в файле есть русские буквы команда cat их отображает. Версия mc-4.6.0-5. Команад date выводит название дней недели и месяцев по русски.

Может кто-нибудь подскажет что надо делать.

Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Руссификация консоли Red Hat 9"
Отправлено toris0 , 16-Янв-08 12:03 
Разобрабся с этой проблемой.
Самому смешно )))
Для руссификации консоли в Red Hat 9 достаточно одной команды:
export LANG="ru_RU.KOI8-R"

!!! только из MC это запускать нельзя.

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

Возникла другая проблема. Теперь на разделах самбы из консоли видны файлы с русскими именами в виде псевдографики. Кто знает как от этого избавиться подскажите пожалуйста.


"Руссификация консоли Red Hat 9"
Отправлено angra , 17-Янв-08 05:51 
Почитать опции монтирования для smb, если не ошибаюсь за это отвечает iocharset

"Руссификация консоли Red Hat 9"
Отправлено toris0 , 22-Янв-08 09:20 
>Почитать опции монтирования для smb, если не ошибаюсь за это отвечает iocharset
>

Вы очевидно меня не правильно поняли (или я неполно изложил суть проблемы).
есть раздел в линуксе, имеющий файловую систему ext3. этот раздел используется самбой, и монтируется windows-машинам при входе в домен как сетевой диск. И виндовые машины пишут туда русскими буквами. Эту проблемуможно было бы решить, если при начальной настройке самбы установить опции:
character set=koi8-r
client code page=866
но этого не было сделано. А теперь там уже очень много фалов и переименовывать их долго. Да и не правлиьно это как-то. Функция мантирования iocharset используется для мантирования виндовых разделов в линукс. И может быть использована для файловых систем ntfs, vfat и д.р. а у меня ext3, которая эту опцию не поддерживает.
Мне же надо, чтобы созданные виндой имена фалов с русскими буквами отображались в консоли в правлиьной кодировке а не в псевдографике, как они сейчас отображаются.



"Руссификация консоли Red Hat 9"
Отправлено angra , 23-Янв-08 02:08 
У ext2/3 не понятия внутренней кодировки, ничто не мешает одной программе писать в utf8, а другой в koi8, в результате будут имена в обоих кодировках. Так что придется вам либо изменить кодировку в консоли либо таки перекодировать имена всех файлов, между прочим последнее делается в одну строку на баше.


"Руссификация консоли Red Hat 9"
Отправлено toris0 , 31-Янв-08 10:48 
>У ext2/3 не понятия внутренней кодировки, ничто не мешает одной программе писать
>в utf8, а другой в koi8, в результате будут имена в
>обоих кодировках. Так что придется вам либо изменить кодировку в консоли
>либо таки перекодировать имена всех файлов, между прочим последнее делается в
>одну строку на баше.

Разобрался со всем, чем мог. Решил доку выложить. Может поможет какому нибудь начинающему линуксоиду. Такому же как я.

Руссификация Red Hat 9
1.    Из файла /etc/sysconfig/i18n удаляем всё и пишем туда следующее:
LANG="ru_RU.KOI8-R"
SUPPORTED="ru_RU.KOI8-R:ru_RU.koi8r:ru_RU:ru"
SYSFONT="cyr-sun16"
SYSFONTACM="koi8-u"
2.    Из файла /etc/sysconfig/keyboard удаляем всё и пишем туда следующее:
KEYBOARDTYPE="pc"
KEYTABLE="ru-ms"
3.    Добавляем сточку в файл /root/ .bash_profile строчку:
export LANG="ru_RU.KOI8-R"
и вбираем все остальные строчки начинающиеся на export LANG=
4.    Добавляем в файл /etc/samba/smb.conf следующие сточки:
dos charset = CP866
unix charset = KOI8-R
5.      Заходим на сетевые диски самбы из windows и поиском в фаре находим все файлы содержащие символ “№”, заменяем символ “№” в именах файлов на “#”. Это необходимо сделать, так как в samba 3.X в кодировке KOI8-R не существует символа “№”.
6.    Перезагружаем сервер командой reboot
7.    Выполняем следующие команды
rpm –U groff-1.18.1-24.i386.rpm
rpm –U groff-gxditview-1.18.1-24.i386.rpm
rpm –U groff-perl-1.18.1-24.i386.rpm
rpm –U less-378-8.i386.rpm
rpm –U mc-4.6.0-5.i386.rpm
8.    В mc жмём F9 выбираем пункт Настройки(Options)->Биты символов(Display Bits) и выбираем здесь кодировку KOI8-R, а так же ставим крестик Полный 8-битный ввод (Full 8 bits input)
9.    Копируем файл utf2koi в раздел самбы на линукс сервере и запускаем его на выполнение.

P.S. скрипт, содержащийся в файле utf2koi
#!/bin/bash

CODE_FROM="UTF-8"

function recode_file()
{
old_name="$@"
new_name=`echo "$@" | iconv -c -f$CODE_FROM`
stat1=$?
mid_name=`echo "$@" | iconv -c -fUTF-8 2>/dev/null`
stat2=$?

if [ x"$old_name" != x"$new_name" -a $stat1 -eq 0 -a x"$mid_name" != x"$old_name" ];
  then
   echo "Recode: $old_name -> $new_name"
   mv "$old_name" "$new_name"
fi
}

function reading_dir()
{
   files="$1"
   for i in "$files"/*
    do
     if [ -d "$i" ];
      then
       echo "Dir: "$1"/`basename "$i"`"
       old_way=`pwd`
       cd "$1"
       recode_file "`basename "$i"`"
       cd $old_way
     fi
    done


   files="$1"
   for i in "$files"/*
   do
    if [ -d "$i" ];
     then
      t="$1"/`basename "$i"`
      echo "t: $t"
      reading_dir "$t"
     else
      old_way=`pwd`
      cd "$1"
      echo "File: `basename "$i"`"
      recode_file "`basename "$i"`"
      cd $old_way
   fi
  done
}

reading_dir "`pwd`"



"Руссификация консоли Red Hat 9"
Отправлено angra , 31-Янв-08 12:19 
>P.S. скрипт, содержащийся в файле utf2koi

Фигасе, моя лень не позволила мне написать больше одной строчки для подбного, если не ошибаюсь for+find+echo+iconv


"Руссификация консоли Red Hat 9"
Отправлено toris0 , 01-Фев-08 07:54 
>>P.S. скрипт, содержащийся в файле utf2koi
>
>Фигасе, моя лень не позволила мне написать больше одной строчки для подбного,
>если не ошибаюсь for+find+echo+iconv

просто это мой первый скрипт на шеле. ещё не достаточно занком со всеми возможностями и средствами... привык к классическому программированию.


"Руссификация консоли Red Hat 9"
Отправлено angra , 04-Фев-08 12:27 
Тогда могу посоветовать осваивать Perl. Скрипты на нем намного приятней писать и читать, чем на шелле. Последним в основном пользуюсь только если все умещается в пару строк, нет серьезной логики или 70% действий это вызов внешних команд. Perl избавляет от необходимости отдельно изучать grep, sed, awk, bash и кучу других утилит. Это воистину swiss-army-knife для сисадмина.
Кстати не верьте что Perl очень сложен для освоения или восприятия, на нем легко можно писать скрипты понятные тому, кто владеет хоть одним процедурно-объектным языком и есть положительный опыт изучения его в качестве первого языка.

"Руссификация консоли Red Hat 9"
Отправлено Ag , 16-Янв-08 23:57 
посмотрите    http://mcmcc.bat.ru/       там есть статья про русификацию RedHat 9   может, чем и поможет



"Руссификация консоли Red Hat 9"
Отправлено toris0 , 22-Янв-08 09:21 
>посмотрите    http://mcmcc.bat.ru/       там
>есть статья про русификацию RedHat 9   может, чем и
>поможет

Спасибо большое за внимание к моей проблеме, но, к сожалению, ссылка не рабочая :-(


"Руссификация консоли Red Hat 9"
Отправлено Ager , 22-Янв-08 16:10 
>>посмотрите    http://mcmcc.bat.ru/       там
>>есть статья про русификацию RedHat 9   может, чем и
>>поможет
>
>Спасибо большое за внимание к моей проблеме, но, к сожалению, ссылка не
>рабочая :-(

видимо, временные проблемы с сервером :(
когда я писал свой первый мессаг - успешно "сходил" по ссылке, проверил что статья про русификацию присутствует :)