Пытаюсь руссуфицировать консоль 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
fiexport 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/fontsexport 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 достаточно одной команды:
export LANG="ru_RU.KOI8-R"!!! только из MC это запускать нельзя.
можно записать эту сточку в .bash_profile, и консоль у вас всегда будет с русским языком.
Возникла другая проблема. Теперь на разделах самбы из консоли видны файлы с русскими именами в виде псевдографики. Кто знает как от этого избавиться подскажите пожалуйста.
Почитать опции монтирования для smb, если не ошибаюсь за это отвечает iocharset
>Почитать опции монтирования для smb, если не ошибаюсь за это отвечает iocharset
>Вы очевидно меня не правильно поняли (или я неполно изложил суть проблемы).
есть раздел в линуксе, имеющий файловую систему ext3. этот раздел используется самбой, и монтируется windows-машинам при входе в домен как сетевой диск. И виндовые машины пишут туда русскими буквами. Эту проблемуможно было бы решить, если при начальной настройке самбы установить опции:
character set=koi8-r
client code page=866
но этого не было сделано. А теперь там уже очень много фалов и переименовывать их долго. Да и не правлиьно это как-то. Функция мантирования iocharset используется для мантирования виндовых разделов в линукс. И может быть использована для файловых систем ntfs, vfat и д.р. а у меня ext3, которая эту опцию не поддерживает.
Мне же надо, чтобы созданные виндой имена фалов с русскими буквами отображались в консоли в правлиьной кодировке а не в псевдографике, как они сейчас отображаются.
У ext2/3 не понятия внутренней кодировки, ничто не мешает одной программе писать в utf8, а другой в koi8, в результате будут имена в обоих кодировках. Так что придется вам либо изменить кодировку в консоли либо таки перекодировать имена всех файлов, между прочим последнее делается в одну строку на баше.
>У 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`"
>P.S. скрипт, содержащийся в файле utf2koiФигасе, моя лень не позволила мне написать больше одной строчки для подбного, если не ошибаюсь for+find+echo+iconv
>>P.S. скрипт, содержащийся в файле utf2koi
>
>Фигасе, моя лень не позволила мне написать больше одной строчки для подбного,
>если не ошибаюсь for+find+echo+iconvпросто это мой первый скрипт на шеле. ещё не достаточно занком со всеми возможностями и средствами... привык к классическому программированию.
Тогда могу посоветовать осваивать Perl. Скрипты на нем намного приятней писать и читать, чем на шелле. Последним в основном пользуюсь только если все умещается в пару строк, нет серьезной логики или 70% действий это вызов внешних команд. Perl избавляет от необходимости отдельно изучать grep, sed, awk, bash и кучу других утилит. Это воистину swiss-army-knife для сисадмина.
Кстати не верьте что Perl очень сложен для освоения или восприятия, на нем легко можно писать скрипты понятные тому, кто владеет хоть одним процедурно-объектным языком и есть положительный опыт изучения его в качестве первого языка.
посмотрите http://mcmcc.bat.ru/ там есть статья про русификацию RedHat 9 может, чем и поможет
>посмотрите http://mcmcc.bat.ru/ там
>есть статья про русификацию RedHat 9 может, чем и
>поможетСпасибо большое за внимание к моей проблеме, но, к сожалению, ссылка не рабочая :-(
>>посмотрите http://mcmcc.bat.ru/ там
>>есть статья про русификацию RedHat 9 может, чем и
>>поможет
>
>Спасибо большое за внимание к моей проблеме, но, к сожалению, ссылка не
>рабочая :-(видимо, временные проблемы с сервером :(
когда я писал свой первый мессаг - успешно "сходил" по ссылке, проверил что статья про русификацию присутствует :)