LINUX.ORG.RU

Gentoo: проблема с русским после обновления glibc


0

0

После обновления glibc русский в некоторых приложениях стал изображаться кракозябликами. Локаль ru_RU.UTF-8. Напрмер в консоли команда ls выдаёт следующее:
╨░.sxw
╨╤╨╕╨▒╨║╨╕╨г╨а╨╨05_2007.04.17.txt*
╨╨╗╨░╨╜╨╕╤╨╛╨▓╨░╨╜╨╕╨╡.lyx
╨╨╗╨░╨╜╨╕╤╨╛╨▓╨░╨╜╨╕╨╡.lyx~
╨╨╗╨░╨╜╨╕╤╨╛╨▓╨░╨╜╨╕╨╡.sxw
Но, при этом в той же конссоли ls --help выдаёт нормальную справку на русском. В гномовском наутилусе русские имена файлов отображаются нормально. В гномовской панели задач русские имена окон отображаются нормально почти у всех приложений, кроме wine. Пробовал запускать revdep-rebuild — не помогло. Не пойму куда копать?


Ответ на: комментарий от Marmirus

/etc/locale.gen не менял. Он у меня такой:

en_US.UTF-8 UTF-8
en_US ISO-8859-1
ru_RU ISO-8859-5
ru_RU.KOI8-R KOI8-R
ru_RU.UTF-8 UTF-8
ru_RU UTF-8
ru_RU.CP1251 CP1251
ru_RU CP1251
ru_RU.IBM866 IBM866
ru_RU IBM866

Причём проблема возникла уже на 3-х компах.

С локалью вроде всё нормально:

% locale

LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=POSIX
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.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=

% locale -a

C
en_US
en_US.iso88591
en_US.utf8
POSIX
ru_RU
ru_RU.cp1251
ru_RU.ibm866
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian

Nelud
() автор топика

а нельзя ли, для ясности, в том же каталоге сделать:

touch ещё_файл.txt
ls
echo вот мои файлы: *
echo вот мои файлы: * |hexdump -C

PS. о каких версиях glibc идёт речь?

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

> Может быть проблема в кодировке файловых имён на диске?

Нет. Я же написал, что в наутилусе всё кажет нормально.

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

> С USE="nls"?

Конечно. Система уже была настроена и всё пахало нормально до недавнего emerge -uDN world. :-(

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

> а нельзя ли, для ясности, в том же каталоге сделать:

Чёрт! Уже не набираются русские буквы, хотя вчера набирались... Я со вчера только поменял /usr/share/X11/locale/en_US.UTF-8/XLC_LOCALE на рекомендуемый из ru.gentoo-wiki.org, пересобрал coreutils и чуть покопался в locale.alias...

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

Видя такое я бы рекомендовал обрубить руки и вообще не обновляться - скоро взорвётся ЦПУ и вскипят кристаллы оперативки.

С чего на чего обновлялся, самоделкин? Глибц 2.8-бета сасёт, `emerge -avt glibc` в студию!

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

glibc не обновлялся, а пересобрался с 2.6.1 на то же самое. Причём почему пересобрался, я не могу восстановить, но не из-за изменения USE флагов, а из-за какой-то переменной (чё-то такое emerge -pv выдавал). У меня все основные проги стабильных версий. Только некоторые вещи в /etc/portage/package.keywords прописал...

$ sudo emerge -pvt glibc
These are the packages that would be merged, in reverse order:
Calculating dependencies... done!
[ebuild R ] sys-libs/glibc-2.6.1 USE="nls -debug -gd -glibc-omitfp (-hardened) (-multilib) -profile (-selinux) -vanilla" 0 kB
Total: 1 package (1 reinstall), Size of downloads: 0 kB

Кстати, может это и не из-за glibc? Может это быть из-за обновления freetype?

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

Вернил взад XLC_LOCALE, опять начали набираться русские символы в консоли.

Я сделал отдельную директорию для эксперимента и скопировал туда ради эксперимента один русский файл через наутилус. Далее:

% touch ещё_файл.txt

% ls
ещё_файл.txt  ╨Ф╨Ю╨У╨Ю╨Т╨Ю╨а ╨Я╨Ю╨Ы╨м╨Ч╨Ю╨Т╨Р╨Э╨Ш╨п ╨╛╨▒╤А╨░╨╖╨╡╤Ж.doc

% echo вот мои файлы: *
вот мои файлы: ╨Ф╨Ю╨У╨Ю╨Т╨Ю╨а ╨Я╨Ю╨Ы╨м╨Ч╨Ю╨Т╨Р╨Э╨Ш╨п ╨╛╨▒╤А╨░╨╖╨╡╤Ж.doc ещё_файл.txt

% echo вот мои файлы: * |hexdump -C 
00000000  a2 ae e2 20 ac ae a8 20  e4 a0 a9 ab eb 3a 20 d0  |вот мои файлы: ╨|
00000010  94 d0 9e d0 93 d0 9e d0  92 d0 9e d0 a0 20 d0 9f  |Ф╨Ю╨У╨Ю╨Т╨Ю╨а ╨Я|
00000020  d0 9e d0 9b d0 ac d0 97  d0 9e d0 92 d0 90 d0 9d  |╨Ю╨Ы╨м╨Ч╨Ю╨Т╨Р╨Э|
00000030  d0 98 d0 af 20 d0 be d0  b1 d1 80 d0 b0 d0 b7 d0  |╨Ш╨п ╨╛╨▒╤А╨░╨╖╨|
00000040  b5 d1 86 2e 64 6f 63 20  a5 e9 f1 5f e4 a0 a9 ab  |╡╤Ж.doc ещё_файл|
00000050  2e 74 78 74 0a                                    |.txt.|
00000055

А теперь самое прикольное: в наутилусе ОБА файла отображаются по русски нормально! O_O
http://img70.imageshack.us/img70/2483/screenshotneludut9.png

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

Что-то у тебя консоль ни разу не юникодная. Русские (по её мнению) буквы однобайтные, причём в чудесной кодировке cp866.

Если это текстовая (vt1-vt6) консоль, удели внимание строке UNICODE=yes в /etc/rc.conf и обоим параметрам в /etc/conf.d/consolefont. Если графическая - зависит от конкретной софтины.

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

по rxvt ничего не подскажу. Может, там всё же есть какие-то настройки? Могу посоветовать попробовать konsole, обычно там кодировка работает прекрасно без усилий со стороны пользователя (и даже переключается через меню).

Но всё равно удивительно, как у тебя в cp866-терминале показывает русские буквы ls --help, если locale настроена вовсе не на cp866.

PS. я так понимаю, USE-флаг unicode включен?

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

Пересобрал. Потом сделал qdepends urxvt, и пресобрал все показанные зависимости. Потом сделал ldd /usr/bin/urxvt, на вывод натравил qfile и пересобрал всё это хозяйство. ПРОБЛЕМА ОСТАЛАСЬ. С zsh так не делал, т.к. в текстовой консоли-то всё нормально! Кстати, и с bash кракозяблики, и с xterm + bash/zsh/sh — тоже.

Nelud
() автор топика

Всё вылечилось установкой LANG=en_US.UTF-8

Но это неаккуратненько как-то... Как бы сделать, чтобы работало всё-таки с ru_RU.UTF-8?

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