LINUX.ORG.RU

Сломалась кириллица в консоли слэквари

 , , , ,


0

2

Привет, All.

Набор кириллицы в консоли выглядит кириллицей, но bash-4.3$ touch ТожеКириллица; ls выдает либо строчку восьмеричных кодов (вида «\260\342...») в tty1, либо строчку вопросительных знаков (в konsole). У MidnightCommander что-то непонятное с субшеллом - тут вопросы, а под Ctrl-O - кириллица...

/etc/rc.d/rc.font: setfont -v UniCyrExt_8x16.psf.gz

/etc/rc.d/rc.keymap: if [ -x /usr/bin/loadkeys ] then /usr/bin/loadkeys ruwin_ct_sh-UTF-8.map; fi

/etc/profile.d/lang.sh: export LANG=en_US.UTF-8

/etc/lilo.conf: append =" vt.default_utf8=1"

Есть еще пара скриптов для переключения локали: export LANG=en_US.UTF-8; echo -ne «\033%G» и export LANG=ru_RU.UTF-8; echo -ne «\033%G»

Да, все перечисленные скрипты executable. Вот еще: bash-4.3$ locale locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 ... LC_COLLATE=C ... LC_ALL= Поломалось, вроде, после установки с последующим откатом назад ряда пакетов из линейки slackware64-current.

С наилучшими, Максим.

locale говорит, что файлов локали на месте нет.
1) проверить, что в имя локали не затесалась кириллица:
echo $LANG | hexdump -C
2) проверить, что в LC_ALL, она перекрывает LANG и остальные LC_*
3) переустановить пакет с локалями:
Убедившись, что в /etc/slackpkg/mirrors указано правильное зеркало (версия и битность), выполнить
# slackpkg reinstall glibc-i18n
# slackpkg install glibc-i18n
В зависимости от ситуации одна из команд ругнется, вторая отработает.
Либо загрузить пакет l/glibc-i18n руками в /tmp и выполнить:
# upgredepkg --install-new --reinstall /tmp/glibc-i18n-*t?z

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 2)

Честно, в слаке уже года два не сидел. Мне надоело и я переключился на Mint. Поэтому что-то конкретное, под новые дистрибутивы, сказать сложно. Но, возможно, подскажу, куда копать:

/etc/profile.d/lang.sh
/etc/rc.d/rc.keymap
/etc/rc.d/rc.font

Типо того.

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

Последние два — мимо, ибо

Набор кириллицы в консоли выглядит кириллицей

/etc/rc.d/rc.font:
setfont -v UniCyrExt_8x16.psf.gz

/etc/rc.d/rc.keymap:
if [ -x /usr/bin/loadkeys ] then /usr/bin/loadkeys ruwin_ct_sh-UTF-8.map; fi

/etc/lilo.conf:
append =" vt.default_utf8=1"

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

У меня тоже какие-то коды прут при нажатии клавиш стрелок влево-вправо, а в убунточке нормально все - либо никаких кодов, либо перемещает каретку курсора по тексту. И только на слаке такая фигня с консолью (в т.ч. когда слака под докером).

menangen ★★★★★ ()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от Xenius

glibc-i18n, а также пакет с /usr/bin/locale* сносил и переустанавливал - без изменений. Сразу после успешной переустановки (нижеобруганного руками не трогал):

bash-4.3# localedef -v -f UTF-8 -i en_US en_US.UTF-8
/usr/share/i18n/locales/en_US:7: non-symbolic character value should not be used
/usr/share/i18n/locales/en_US:8: non-symbolic character value should not be used
[...полтора экрана таких ругательств...]
LC_IDENTIFICATION: field `abbreviation' not defined
no output file produced because warnings were issued

bash-4.3# cat /usr/share/i18n/locales/en_US
escape_char /
comment_char %
% Locale for English locale in the USA
% Contributed by Ulrich Drepper <drepper@redhat.com>, 2000

LC_IDENTIFICATION
title «English locale for the USA»
source «Free Software Foundation, Inc.»
[...девятая и последующие строки опущены...]

bash-4.3# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
[...тут все в порядке...]
LC_ALL=

bash-4.3# locale -a |grep en_US
en_US
en_US.utf8

Каких файлов/директорий не может открыть locale? Что значит cannot set to default локаль? Ну и про ошибки localedef - что не так?

С наилучшими, Максим.

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

Каких файлов/директорий не может открыть locale?

Например:

$ LANG=blah locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
...
А не может открыть те, на которые open вернул ошибку (ENOENT):
$ LANG=blah strace -e open locale
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib64/locale/locale-archive", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib64/locale/blah/LC_CTYPE", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
locale: Cannot set LC_CTYPE to default locale: No such file or directory
open("/usr/lib64/locale/blah/LC_MESSAGES", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
open("/usr/lib64/locale/blah/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
locale: Cannot set LC_ALL to default locale: No such file or directory
...
то есть, вот эти:
/usr/lib64/locale/locale-archive   # это нормально
/usr/lib64/locale/blah/LC_CTYPE
/usr/lib64/locale/blah/LC_MESSAGES
/usr/lib64/locale/blah/LC_MESSAGES

Скомпилированные локали лежат в /usr/lib64/locale/.
В /usr/share/i18n/locales/ лежат исходники локалей.

Что значит cannot set to default локаль?

В переменной окружения указана локаль, но прочитать ее с диска не удалось.

Ну и про ошибки localedef - что не так?

Не надо ее звать. Комплект исправных локалей поставляется с дистрибутивом.

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 3)