Решено: Поломанная локаль ru_UA.utf8 в Squeeze (Локаль ru_UA.utf8 глючит в Squeeze)

Knoppix

Модераторы: Warderer, Модераторы разделов

Ответить
papacarlo
Сообщения: 33
ОС: Debian Wheezy

Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение papacarlo »

Столкнулся с такой проблемой: локаль ru_UA.utf8 не дает вводить кириллицу в xterm и wine. Возможно также и в других программах, но пока глюки отмечены только в этих. Установка руками переменной LANG=ru_UA.UTF-8 полностью решает проблему, что дает основания считать означенную локаль несколько кривоватой. При этом все попытки устанавливать при загрузке системы или при входе работающее значение LANG не помогли. Локаль все-равно каким-то непонятным мне образом остается ru_UA.utf8, а не ru_UA.UTF-8, как я указывал, например в /etc/profile и/или ~/.profile. Попытки прописать алиас в файле /usr/share/X11/locale/locale.alias тоже к желаемому эффекту не привели.

Кстати, при генерации локали генерится как раз ru_UA.UTF-8, а не кривая ru_UA.utf8.

ЗЫ В линуксе я не дока пока, но вот решил, что пора переходить. А тут попал в засаду...

Помогите кто может. Кто может помогите.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

что у вас в системе показывает
$ localedef --list-archive
?

upd. ну, заодно, что у вас в обычно используемых файлах
$ cat /etc/default/locale
?
$ cat /etc/environment
?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
papacarlo
Сообщения: 33
ОС: Debian Wheezy

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение papacarlo »

Вот, прилагаю, как просили.

papa@hornet:~$ localedef --list-archive
en_US.utf8
ru_UA.utf8
papa@hornet:~$ cat /etc/default/locale
# File generated by update-locale
#LANG="ru_UA.UTF-8"
#LANGUAGE="ru_UA:ru"
papa@hornet:~$ cat /etc/environment
papa@hornet:~$

В файле /etc/default/locale коммент с LANG-а снимал, не работает все-равно.
Помогите, не хочу назад под вынь.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

давайте начнём с «тяжёлого», но быстрого:
1. попробуйте переконфигурировать пакет locales:
$ LANG=C sudo dpkg-reconfigure locales 2>&1 | tee log.1.txt
в файле log.1.txt будет сохранён полный вывод этой команды.
на втором шаге (выбор дефолтной локали) выберите ru_UA.UTF-8.
если в выводе после нажатия финального «ок» не будет сообщений об ошибках («… no input …», «… not defined …», «… invalid definition …» и т.п.), перезагрузите компьютер и проверьте ввод кириллицы.
если были ошибки или кириллица всё равно не вводится, выполните пункт 2:
2. попробуйте переустановить пакет locales:
$ LANG=C sudo aptitude reinstall locales 2>&1 | tee log.2.txt
в файле log.2.txt будет сохранён полный вывод и этой команды
перезагрузите компьютер и проверьте ввод.
если и это не поможет, приложите содержимое файлов log.1.txt и log.2.txt

papacarlo писал(а):
19.12.2010 01:19
Помогите, не хочу назад под вынь.
не хочу вас расстраивать, но в ms/windows с локалями вообще полный швах. (надеюсь, я правильно понял, что под глаголом «вынь» вы подразумевали ms/windows)?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
papacarlo
Сообщения: 33
ОС: Debian Wheezy

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение papacarlo »

Спасибо за участие, но чуда, увы не произошло.

От предложенных манипуляций ровным счетом ничего не изменилось, из чего следует что локаль ru_UA.utf8 в Дебиан действительно слегка поломана. Тем более, что ошибок не было. Т.е. система думает, что все хорошо.
Частично решает проблему костыль в виде помещения кода LANG=ru_UA.UTF-8; export LANG в файлы ~/.profile и ~/.bashrc.
Тогда, если запустить гномотерминал, то из него уже можно запускать руками нужные программы. А вот из самого гнома (из менюшки) - по-прежнему не работает.
Но я и раньше мог из терминала запустить с установкой работающего значения LANG перед запуском. Так что это не решение.

А насчет вынь (да, это выньдовс)- так там ситуация другая - нет локали - нет проблем. Все работает. Я уже лет 10 назад пытался на линукс перейти - как раз проблемы с локализацией остановили меня. Жаль, что столько времени прошло, почти все программы необходимые есть нативные уже, а снова те же грабли. Я уже и баг в Дебиан отправил, а в ответ - тишина.

Прилагаю логи. Спасибо, что нашли для меня время.
Вложения
log.2.txt
(2.76 КБ) 7 скачиваний
log.1.txt
(164.81 КБ) 6 скачиваний
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

багрепорт вижу. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=607138
ответа там нет потому, что это локальная проблема у вас.

ну что ж, тогда будем «по-тяжёлому». будем искать, где же у вас подставляется эта «ru_UA.utf8»
$ find /etc/ -maxdepth 2 -type f | sudo xargs grep utf8
$ find /etc/X11 -type f | xargs grep utf8
$ find ~/ -maxdepth 1 -type f \! -name \*bash_history | xargs grep utf8

p.s. кстати, ни здесь, ни в багтрекере вы не привели вывод программы locale.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

если ничего интересного не найдётся, тогда последний вариант:
вычислить, какая из программ первой в иерархии получает некорректный environment:
$ ps fax | less
для всех процессов, начиная с *dm и дальше по цепочке вызова вплоть до проблемного xterm-а, выполните:
$ sudo cat /proc/<номер процесса>/environ | xargs -0 -n 1 echo | grep -i utf
и смотрите, у какого первого в дереве процесса UTF-8 превратится в utf8 (там может попасться и не только переменна LANG, это, кстати, тоже интересно).

после этого уже можно будет подумать над тем, как узнать, почему так происходит.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
papacarlo
Сообщения: 33
ОС: Debian Wheezy

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение papacarlo »

В интернете нарыл, что подобная проблема не уникальна для Дебиан и Убунты, также она замечена на Генту. Там ее локализовали в гноме, а именно - в гдм, который не совсем корректно устанавливает локаль в процессе загрузки. Хотя, на самом деле это все-таки проблема locales, которые не работают так как нужно, из-за чего некоторые программы не подхватывают локаль ru_UA.utf8 как ru_UA.UTF-8 не смотря на прописанные алиасы. ИМХО
Поскольку в линуксе я пока не дока, отмониторить процесс загрузки знания пока не позволяют, решил сделать такой эксперимент. В gdm за локаль отвечает переменная GDM_LANGUAGE. Она выбирается в процессе загрузки и потом все время предположительно сбивает локаль. Поэтому в файл ~/.profile было добавлено следующее:

GDM_LANGUAGE='ru_UA.UTF-8
export GDM_LANGUAGE
LANG='ru_UA.UTF-8'
export LANG

В итоге - требуемого результата добился. Причем возможность назначить отдельную локаль для каждого пользователя в процессе загрузки тоже осталась. Понимаю, что костыль, но в целом - работает. А сделать по-правильному - пока знаний не хватает. Наверное, и гномовцам тоже не хватило знаний нормально гдм написать. чтобы системную локаль не сбивал, если она установлена. Еще раз спасибо. sash-kan - отдельное спасибо.

Пока остаюсь под линуксом.

Кстати, можно в список известных проблем добавить, может пригодится еще кому.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

papacarlo писал(а):
19.12.2010 21:27
В интернете нарыл, что подобная проблема не уникальна для Дебиан и Убунты, также она замечена на Генту. Там ее локализовали в гноме, а именно - в гдм, который не совсем корректно устанавливает локаль в процессе загрузки.
добавьте, пожалуйста, ссылки на найденную информацию в свой багрепорт.
ещё очень неплохо было бы создать багрепорт для пакета gdm. с перекрёстными ссылками между этими двумя связанными багрепортами. справитесь?

p.s. кстати, приведённый мною алгоритм просмотра environment-ов даст весьма полезную для багрепорта информацию: каким именно процессом формируется неправильное окружение для потомков.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

papacarlo писал(а):
19.12.2010 21:27
Хотя, на самом деле это все-таки проблема locales, которые не работают так как нужно, из-за чего некоторые программы не подхватывают локаль ru_UA.utf8 как ru_UA.UTF-8 не смотря на прописанные алиасы.
charmap-а "utf8" не существует. существует charmap "UTF-8". почему такой некорректный charmap всплывает в том же выводе "localedef --list-archive" для меня — загадка.
то, что xlib не понимает несуществующего charmap-а — это никак не баг xlib или кого-то ещё:
$ LC_ALL=ru_UA.utf8 xterm
Warning: locale not supported by Xlib, locale set to C
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
papacarlo
Сообщения: 33
ОС: Debian Wheezy

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение papacarlo »

Не получается почему-то с цитатами. Но, думаю, судя из контекста будет понятно.
1. По поводу багрепорта в дебиан - конечно дополню его своей информацией. Постараюсь сделать баг репорт и для гдм тоже.
2. Ошибка у меня при запуске xterm была именно такая и локаль сбрасывалась в С.
3. Насчет локали ru_UA.utf8 - ведь работает же "несуществующая" локаль ru_RU.utf8. Значит это не в xlib проблема, а в locales? Или все-таки в xlib?

По свободе попробую разобраться с тем, что происходит.
Спасибо огромное за помощь. Наверное это был тот волшебный пинок, который помог мне собрать в кучу всю мозаику и найти подходящее решение.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

а если вот такой патчик наложить на locale.alias, то у меня alias воспринимается:

Shell

--- /usr/share/X11/locale/locale.alias.orig 2010-12-20 22:24:45.000000000 +0000 +++ /usr/share/X11/locale/locale.alias 2010-12-20 22:22:42.000000000 +0000 @@ -968,6 +968,7 @@ ru.UTF-8 ru_RU.UTF-8 ru_RU ru_RU.UTF-8 ru_RU.utf8 ru_RU.UTF-8 +ru_UA.utf8 ru_UA.UTF-8 ru_RU.iso88595 ru_RU.ISO8859-5 ru_RU.ISO-8859-5 ru_RU.ISO8859-5 ru_RU.koi8r ru_RU.KOI8-R @@ -2266,6 +2267,7 @@ ru.UTF-8: ru_RU.UTF-8 ru_RU: ru_RU.UTF-8 ru_RU.utf8: ru_RU.UTF-8 +ru_UA.utf8: ru_UA.UTF-8 ru_RU.iso88595: ru_RU.ISO8859-5 ru_RU.ISO-8859-5: ru_RU.ISO8859-5 ru_RU.koi8r: ru_RU.KOI8-R


а как у вас?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

запостил патч в багрепорт как возможное решение.
у кого есть возможность, просьба протестировать.
необходимы:
1. squeeze
1. gdm
2. сгенерированная и установленная умолчанием локаль ru_UA.UTF-8 (dpkg-reconfigure locales).
что проверить:
1. ввод utf (например, кириллицы) в xterm-е (и, если есть возможность, в чём-нибудь запущенном через wine).
2. отсутствие ругани на неподдерживаемую локаль при запуске в эмуляторе терминала
$ LC_ALL=ru_UA.utf8 xterm

спасибо.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
papacarlo
Сообщения: 33
ОС: Debian Wheezy

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение papacarlo »

Да, подтверждаю, у меня в таком варианте тоже заработало все (xterm, wine).
Раньше, когда прописывал алиасы в этом файле - допустил опечатку в одном месте. Нашел, исправил, заработало. Спасибо.
Теперь у нас есть два работающих варианта решения проблемы.
И все-равно, почему-то кажется что это все-таки не совсем правильное поведение гдм дефолтные локали переопределять на свои. ИМХО.

Да, и еще - в багрепорт 607138 написал, что получилось все. Хотел багрепорт по gdm сделать. Но не разобрался с перекрестными ссылками, так что по gdm пока не разместил.

Еще раз спасибо.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Решено: Поломанная локаль ru_UA.utf8 в Squeeze

Сообщение sash-kan »

в gdm, по-моему, нет смысла постить. чехарда с utf8 - UTF-8, как я понимаю, слишком глобальна, и обходами этой чехарды полон locale.alias.
вот туда и стоит запостить:
$ dpkg -S /usr/share/X11/locale/locale.alias
libx11-data: /usr/share/X11/locale/locale.alias

papacarlo писал(а):
21.12.2010 14:06
Но не разобрался с перекрестными ссылками
просто ссылку на страничку вставляете в письмо, да и всё. ну и пишете, мол, the same bug. или что-то в этом духе.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Ответить