Summary: | при локали UTF-8 без инициализации поддержки юникода screen виснет | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Nikolay A. Fetisov <naf> | ||||
Component: | screen | Assignee: | Gleb F-Malinovskiy <glebfm> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | major | ||||||
Priority: | P2 | CC: | at, eostapets, glebfm, mike, morozov, php-coder, rider | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
Bug Depends on: | 5440 | ||||||
Bug Blocks: | 10446, 9199, 14167 | ||||||
Attachments: |
|
Description
Nikolay A. Fetisov
2006-01-09 18:51:54 MSK
У меня работает, screen-4.0.2-alt3 bash-3.1.1-alt1 У меня пакеты те же. screen-4.0.2-alt3 bash-3.1.1-alt1 Разница, как я понимаю, в системах: у меня обновлённый до Sisyphus Compact 3.0rc10. На паре имеющихся вблизи Compact 3.0rc10 + backports ситуация та же. Да, с тем же screen и на Sisyphus, ведущим свой начало с Master 2.4, всё работало. Нет, не в командном интерпретаторе дело... От пользователя работает запуск вида $ screen -U или $ LANG=ru_RU.KOI8-R screen От root - и просто 'screen'... Итого: при локали UTF-8 без инициализации поддержки юникода screen виснет после вывода экрана приветствия. Кажется, в федоре сделали автовключатор этой самой инициализации -- мож у них патчик стырить? Не вижу в федоре такого патчика. Зато в 4.0.3 исправили пару каких-то юникодных багов. Для screen-4.0.3-alt1 проблема актуальна (система ведёт начало от M22, /etc/screenrc никогда не трогался). Её может замаскировать ~/.screenrc с отключением баннера: startup_message off Вообще мож отключить его по умолчанию? А то анноит, честно говоря. Лёш, поправь по возможности. А то с UTF-8 из коробки скрин у нас будет в ней "нерабочий". На крайняк хоть screenrc. screen 4.0.3-alt2 - без изменений. Отключение баннера через директиву "startup_message off" в файле конфигурации снимает проблему разве что с зависанием: текст на русском ввести при этом не удастся, часть символов (например, 'ф') передаётся не правильно. Добавление в ~/.screenrc директив 'defutf8 on', 'utf8 on on' также ничего не даёт. Не знаю что делать. У меня пока нет utf консоли, а то бы я занялся отладкой. Впрочем, utf консоль, может быть, скоро будет. Алексей, можно запустить терминал в локали ru_RU.UTF-8. тот же uxterm (In reply to comment #10) > Не знаю что делать. У меня пока нет utf консоли, а то бы я занялся отладкой. > Впрочем, utf консоль, может быть, скоро будет. Тю. :) --- ~/bin/uterm --- #!/bin/sh G_FILENAME_ENCODING=utf-8 LC_ALL=ru_RU.UTF-8 LC_COLLATE=uk_UA.UTF8 LC_CTYPE=uk_UA.UTF8 exec urxvt +sb -fn '-*-terminus-bold-*-*-*-20-*-*-*-*-*-iso10646-*' -rv -cr yellow -tn xterm & screen -U работает Это известно, но не всем. На RH-производных -U сейчас не требуется. *ping* Не знаю, что делать. Нет идей. Попробую собрать ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/screen-4.0.3-1.el5.src.rpm Created attachment 2027 [details] screen.spec for 4.0.3-alt0.1 based on 4.0.3-1 Тэкс... чего было сделано: спек подчищен до приложенного состояния, сборка поставлена в сизифовый контейнер после удаления родной и беглой проверки, что не осталось ошмётков (а, кроме группы в /etc/group). cd # поскольку там фигурировали startup_message off и KOI8 mv .screenrc .screenrc- mv .i18n .i18n- export LC_ALL=ru_RU.UTF-8 LANG=ru_RU.UTF-8 screen -- проблема не воспроизводится, поскольку startup message не вываливается (причём так и есть в /etc/screenrc). Думаю, достаточно просто добавить такое же # don't display the copyright page startup_message off в /etc/screenrc, как и предлагалось довольно давно. Сборка доступна здесь: http://paq.osdn.org.ua/~mike/RPMS/screen/ (In reply to comment #9) > Отключение баннера через директиву "startup_message off" в файле конфигурации > снимает проблему разве что с зависанием: текст на русском ввести при этом не > удастся, часть символов (например, 'ф') передаётся не правильно. Это осталось, причём явно не проблема терминала -- который дёргается так: #!/bin/sh G_FILENAME_ENCODING=utf-8 LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8 LC_COLLATE=uk_UA.UTF8 LC_CTYPE=uk_UA.UTF8 exec urxvt +sb -fn '-*-terminus-bold-*-*-*-20-*-*-*-*-*-iso10646-*' -rv -cr yellow -tn xterm & и сам по себе позволяет ввод e.g. "фыва" или "йцукен". > Добавление в ~/.screenrc директив 'defutf8 on', 'utf8 on on' также ничего не > даёт. screen -U из сборки в предыдущем комментарии при этом работает нормально. <morozov> Коммит f64bee34fba522762a12e9afa54289de0824d5db (screen-4.0.2-alt-cp866.patch) ломает работу screen'а в UTF-8 Коммит f64bee34fba522762a12e9afa54289de0824d5db (screen-4.0.2-alt-cp866.patch) ломает работу screen'а в UTF-8 (In reply to comment #21) > Коммит f64bee34fba522762a12e9afa54289de0824d5db (screen-4.0.2-alt-cp866.patch) > ломает работу screen'а в UTF-8 Вы сам патч-то видели? + { "CP866", 0, 0x80|'#', 0, 1, 0 }, + { "IBM866", 0, 0x80|'#', 0, 1, 0 }, Это имеет какое-либо отношение к UTF8? Думаю, что "раз не работает с этим, то давайте оторвём" явно не выход. Отключать startup_message нежелательно из соображений GPL 2c. Точняк, если откатить cp866.patch, то startup_message перестает зависать. Там есть --help, которого довольно многим; если это годится для RH, для нас скорее тоже сгодится. 2 mouse: мне неудобно перед тобой, но предпочитаю факты отсутствию предположений. Докопаться до причины ломания двумя строчками чего-то, кроме гвоздей в индексах или ещё какой неявной завязки на порядок -- не могу. (мож попробовать эти две строчки в конец списка или по крайней мере строчкой ниже сдвинуть?) +1 к startup_message off by default $ grep -C1 -m1 announcement /usr/share/license/GPL-2 interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide $ Это отключается в ~/.screenrc. ls или less при запуске, однако, не вываливают пол-экрана legalese с проблемами в юникоде :) В RH сочли осмысленным отрубить, да и у меня в таскаемом .screenrc это первая и последняя строчка. Не надо доводить до абсурда, дух же там в удобстве, да и буква без особого фундаментализма. Впрочем, это всё может быть здесь неактуально (FR про анноящий экран, а не bug про UTF-8). Я откатил cp866.patch (взял коммит из morozov/packages/screen.git). Респект Морозову! Я также исправил все warnings в режиме -DDEBUG -Werror. Желающие прикрутить назад cp866 благоволят собирать screen в режиме rpmbuild --enable debug. Там какой-то чумной код прохода по этим таблицам, в котором я, увы, с ходу не разобрался. (ЕСТЬ ЗАСАДА: теперь в кмулятивный патч не помещается бинарный файл кодировки cp866; к сожалению mouse в свое время не открыл способ получения этого файла.) Закрываю баг как FIXED; может быть переоткрою баг с cp866, чтобы не забылось. Спасибо! (In reply to comment #27) > $ grep -C1 -m1 announcement /usr/share/license/GPL-2 Алексей, между удобством для пользователя и следованием букве закона я предлагаю выбрать удобство, для нас, для пользователей. Иначе, это походит на фанатизм Столлмана и то как это сделано в Debian (где после логина на консоль вываливается подобное предупреждение на пять строк). Почти всё отключают это приветствие, а кто не отключает, то, наверное, просто не в курсе, что его можно отключить ;) То что сочли в RH это не аргумент. Авторы GNU screen сочли нужным по умолчанию выводить startup_message во исполнение требования GPL (которое, впрочем, не является слишком строгим). Я не свожу к абсурду, просто думаю оставить как есть. Если авторы less надумают выводить announcement, это конечно будет более актуальной проблемой. В отличие от less, screen я запускаю один раз per uptime. При переподключении к сессии announcement не выводится. Короче, можно открыть отдельный баг и там будем дальше спорить. :) |