LINUX.ORG.RU
ФорумAdmin

проблема с unicode в Gentoo


0

0

Доброе всем время суток.

Возникла проблема с русификацией gentoo. Все делалось как написано по сыылке: http://ru.gentoo-wiki.com/HOWTO_ru_RU.utf8_Gentoo_way В консоли русский работает (логинюсь удаленно, через ssh), но не less, не vim, не mc с русским работать не хочет. На другой машине с теми же настройками и тем же gentoo все ok.

Вот что находится в конфигах и что пишет система (комменты и пустые строки убраны):

# locale -a
C
en_US
en_US.iso88591
en_US.utf8
POSIX
ru_RU.koi8r
ru_RU.utf8

# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=C
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES=en_US.UTF-8
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=

# cat /etc/locale.gen
en_US ISO-8859-1
en_US.UTF-8 UTF-8
ru_RU.UTF8 UTF8
ru_RU.KOI8-R KOI8-R
ru.ru.CP1251 CP1251

# cat /etc/env.d/02locale
LC_ALL=""
LANG="ru_RU.UTF-8"
LC_NUMERIC="C"
#LC_MESSAGES="C"
LC_MESSAGES="en_US.UTF-8"

# cat /etc/conf.d/consolefont
CONSOLEFONT="ter-k16n"

# cat /etc/conf.d/keymaps
KEYMAP="-u ru4"
SET_WINDOWKEYS="yes"
EXTENDED_KEYMAPS=""
DUMPKEYS_CHARSET="koi8-r"

в /etc/make.conf
LINGUAS="ru"
к USE флагам добавлены: ncurses unicode userlocales utf8

в /etc/rc.conf
UNICODE="yes"

После выполнения комманд:

# env-update && source /etc/profile
# emerge --newuse -u world
# emerge terminus-font
# USE="unicode userlocales utf8" emerge ncurses slang mc

требумый результат так и не получен. В чем может быть проблема?

★★

USE="unicode userlocales utf8" emerge

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

INFOMAN ★★★★★
()
Ответ на: комментарий от INFOMAN

они все равно в make.conf есть. USE="unicode userlocales utf8" emerge - избытачно, можно просто emerge. Сделал для наглядности.

samson ★★
() автор топика

Для mc должен быть установлен флаг slang и снят ncurses.

INFOMAN ★★★★★
()
Ответ на: комментарий от theSoul

> В mc, в меню Options->Display Bits есть опции Input/display codepage и Full 8 bits input. Во что установлены?

Input / display codepage: Other 8 bit

> Для mc должен быть установлен флаг slang и снят ncurses.

попробывал пересобрать без ncurses - результат тот же.

На другой машине собрано с ncurses и со slang и все работает. По всей видимости, что то забыл при русификации, только не могу понять что...

samson ★★
() автор топика

а всё-таки, что значит фраза "less с русским работать не хочет"?

что выдаёт, скажем, такая команда

perl -e 'for ($i=040; $i<0400;$i+=4) { printf("%c",$i); }'|iconv -f koi8r

или такая

perl -e 'for ($i=040; $i<0400;$i++) { printf("%c",$i); }'|iconv -cf koi8r |less

И когда обновлял мир, не забыл ли случайно указать вместе с -Nu ещё и -D ?

alexsaa
()
Ответ на: комментарий от alexsaa

> а всё-таки, что значит фраза "less с русским работать не хочет"?

Логинимся по ssh (терминал настроен на utf8), делаем:
echo "привет" | less

less отображает следующее:

<D0><BF><D1><80><D0><B8><D0><B2><D0><B5><D1><82>
lines 1-1/1 (END)

> perl -e 'for ($i=040; $i<0400;$i+=4) { printf("%c",$i); }'|iconv -f koi8r


svn ~ # perl -e 'for ($i=040; $i<0400;$i+=4) { printf("%c",$i); }'|iconv -f koi8r
$(,048<@DHLPTX\`dhlptx|iconv: illegal input sequence at position 24

svn ~ # perl -e 'for ($i=040; $i<0400;$i+=4) { printf("%c",$i); }'|iconv -cf koi8r
$(,048<@DHLPTX\`dhlptx|

> perl -e 'for ($i=040; $i<0400;$i++) { printf("%c",$i); }'|iconv -cf koi8r |less


less выдает следующее:

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno pqrstuvwxyz{|}~^?
lines 1-1/1 (END)

samson ★★
() автор топика
Ответ на: комментарий от alexsaa

> И когда обновлял мир, не забыл ли случайно указать вместе с -Nu ещё и -D ?

пробывал обновлять и так: emerge -uDn world

samson ★★
() автор топика
Ответ на: комментарий от samson

Такое впечатление, что текущая локаль вовсе не ru_RU, как заявляется выводом locale, а какая-то иная...

Нельзя ли посмотреть ещё и вот это?

perl -e 'for ($i=040; $i<0400;$i+=4) { printf("%c",$i); }'|iconv -cf koi8r

perl -e 'for ($i=040; $i<0400;$i+=4) { printf("%c",$i); }'|iconv -cf koi8r -t utf8

perl -e 'for ($i=040; $i<0400;$i+=4) { printf("%c",$i); }'|iconv -cf koi8r -t utf-8

perl -e 'for ($i=040; $i<0400;$i++) { printf("%c",$i); }'|iconv -cf koi8r -t utf8 |less

ls -l /usr/lib/locale/locale-archive

ls -l /usr/share/i18n/locales/ru_RU

head /usr/share/i18n/locales/ru_RU

localedef --list-archive |grep ru_RU

alexsaa
()
Ответ на: комментарий от mospan

> Попробуй в /etc/locale.gen так: > ru_RU.UTF-8 UTF-8

сам афигел, когда глянул в свой /etc/locale.gen - аж в двух строчках из пяти ошибки :) Вроде как все проверял, поэтому и не обращал внимания в дальнейшем...

спасибо, теперь все ОК.

samson ★★
() автор топика
Ответ на: комментарий от alexsaa

> USE=nls emerge -pvNDu world

ничего не дает. флаг nls уже используется.

samson ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.