>У 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`"