Отправляет email-рассылки с помощью сервиса Sendsay

Локализация и типы терминалов

День добрый.

Возникла задача на дистрибутивах RHEL3 и LEL4 установить програмное
обеспечение которое правильно работает только с TERM=AT386 и понимает
кодировку ibm866.

Пробовал установить локаль CP866, но её нет в дистрибутивах, поэтому
сделал сам (localedef -f /usr/share/i18n/charmaps/IBM866 -i \
/usr/share/i18n/locales/ru_RU ru_RU.CP866)
и добавил инфрмацию о терминале в terminfo (tic -v at386.tic ) файл
at386.tic поставлялся с ПО (цитата разработчиков: "описание терминала
at386.ti для тех систем, где оно отсутствует в terminfo или не совсем
корректно.").

Затем прописал
/etc/sysconfig/i18n
LANG="en_US"
SUPPORTED="en_US:en:ru_RU.CP866:ru_RU.cp866:ru_RU:ru"
SYSFONT="UniCyr_8x16"
SYSFONTACM="cp866"
/etc/sysconfig/keyboard
KEYBOARDTYPE="pc"
KEYTABLE="ru866"
Файлы:
UniCyr_8x16.psf, cp866.acm (положен /etc/sysconfig/console), ru866.map
шли от разработчиков.

После таких манипуляций система вроде должна работать - а ПО корректно
так и не работает.. -( Добился только что бы псевдографика отображалась
правильно, а русского нет -( а mc наоборот перестало отображать гарфику
- отображаются ескейп-последовательности...

Обратившись к разработчикам по проблеме - вот ответ: "требуется любым
способом обеспечить на терминале клиента поддержку 866-фонтов и
866-клавиатуры." при этом сказали какую хотите ту и ставьте локализацию
и так же с типом терминала....

После этого решил загружать шрифт и переключать клавиатуру в момент
когда пользователь коннектится (в профайле ):
setfont -f UniCyr_8x16 -m cp866
loadkey ru866.map

Приэтом жутко ругается, мол нет доступа (Permition ...)
Куда, чего не понятно...

ЗЫ. Руководствовался материалом:
Евгений Балдин, "The Linux Cyrillic HOWTO (russian)"
http://www.inp.nsk.su/~baldin/Cyrillic-HOWTO-russian.html
и FAQ http://www.nixp.ru/rlfaq/rulinux.faq.html

Ответить   Little KING Mon, 18 Jul 2005 12:53:18 +0600 (#403199)

 

Ответы:

В сообщении от 1121680398 секунд после начала Эпохи Little KING написал
(а):

И еще, расскажите подробнее об этом ПО. Доступны ли исходные тексты?
Под какую операционную систему писалось? И для чего собственно
предназначено? Может можно найти аналог, который рассчитан на Linux.

Ответить   Konstantin Korikov Mon, 18 Jul 2005 11:33:18 +0300 (#403254)

 

В сообщении от 1121680398 секунд после начала Эпохи Little KING написал
(а):

А у Вас какой TERM? Небось linux или xterm. ПО видимо требует настоящий
железный терминал AT386, который подключается к последовательному
порту. Если такого терминала нет, значит его нужно эмулировать при
помощи специальной программы - эмулятор терминала.

Если ПО не использует никаких особенностей терминала (цвет, перемещение
курсора, и т.п.), а просто принимает данные со стандартного ввода и
выводит на стандартный вывод, то никакие эмуляторы не требуются, и
никаких извращений с переменной TERM и базой данных terminfo делать не
нужно, просто установить нужный шрифт/таблицу преобразования и keymap.
А еще лучше не калечить систему (что вы уже сделали), а воспользоваться
программой, которая перекодирует ввод и вывод на лету. Я уже не помню
как она называется, но помню что ее автор есть в этом листе, думаю он
или кто-то другой подскажет.

Ответить   Konstantin Korikov Mon, 18 Jul 2005 11:23:41 +0300 (#403255)

 

Konstantin Korikov пишет:

Если конекчусь с консоли сервака, то linux, если же с удаленной машинки,
то в зависимости от клиента. Сам сижу на FC2 - там xterm, пользователи
из под винды NetTerm или ShellGuard установлено AT386.

Нет ни какого железного терминала. ПО это написано на языке Progress,
который в свою очередь является СУБД. т.е. по аналогии Oracle и PLSQL/DMSQl.

В том то и дело, что разработчики ПО используют некоторые коды символов
из кодировки ibm866, в добавок навешано куча сочетаний клавишь...

Сам Progress позволяет "на лету" перекодировать потоки из одной
кодировки в другую.. Но т.к. разработчики ПО устанавливают свое детище
на UnixWare (2.1.х 7.х.х), то там работало с русским только при
TERM=AT3866 и прикручивался пакет руссификации консоли, который в
стартовых скриптах загружал 866 фонт и 866 кодировку, а в про-файлах
(системы и поользователей) принудительно выставляется TERM=AT3866. Для
самой БД кодировка выставлена ibm866, потоки то же в ibm866, все
процедуры/исходники в ibm866.

Так не понятно, что еще нужно перекодировать кроме I/O, т.к. наблюдается
глюк работы системы при работе с полями и проверкой в справочниках, т.е.
набираешь значение, система проверяет и говорит, мол нет такого значения
- выбираешь из справочника такое же значение, переключаешься на
следующее поля, тут же меняется значние с "читабельного" на "кракозябры"
и систему это удовлетворяет?!?! вроде как все пучком..
Да и к тому же как быть с теми символами которые есть в ibm866, и нет их
в koi8-r?

Самое интересное, что на RHEL3 что-то добился, а на LEL4 нет.. :-(( при
этом делал все параллельно...

WBR LK.ICQ 66942266

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 20004; Возраст листа: 724; Участников: 1396
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/403294

Ответить   Little KING Mon, 18 Jul 2005 16:15:09 +0600 (#403294)

 

В сообщении от 1121692509 секунд после начала Эпохи Little KING написал
(а):

Даже если оно написано не под железный а под "программный" терминал,
вам от этого легче не станет.

Обычные отображаемые символы, не управляющие последовательности, это не
так страшно. А вот сочетания клавиш - это проблема. Каждый тип
терминалов посылает программе свои последовательности при нажатии на
комбинации клавиш, тут нет единого стандарта.

Переменная TERM должна соответствовать используемому терминалу. По ней
программы определяют как правильно интерпретировать последовательности,
которые принимаются со входа при нажатии на различные клавиши, и какие
управляющие последовательности использовать при выполнении различных
терминалозависимых операций, типа очистка экрана, вывод цвета,
перемещение курсора.

Лучше переписать ПО под современную CУБД, поддерживающую NLS. Тогда
точно с терминалами проблем не будет. :)

Это происходит с каким терминалом? Если система ориентирована на работу
с AT386, и вы этот AT386 используете (как вы говорили, из под винды
NetTerm или ShellGuard), и система это знает (установлена правильно
переменная TERM), то все должно работать нормально.

Если ПО использует БД terminfo, то разумно предположить что оно может
работать и с другими терминалами, для этого terminfo и предназначена.

Это не страшно одни символы можно заменить другими. Главное это
правильная интерпретация программой входных данных, полученных с
терминала, и правильная интерпретация терминалом выходных данных
полученных от программы, которые кроме обычных символов содержать еще и
управляющие последовательности.

Если программа не может использовать информацию, полученную из terminfo
для нормальной работы с терминалом linux или xterm, то вам нужно
использовать тот терминал, с которым программа может
нормально работать. Если этот терминал AT386, то вам нужна программа,
которая его эмулирует, присутствие правильной информации об этом
терминале в terminfo, и установленная соответствующим образом
переменная TERM. В качестве такого эмулятора в винде, видимо, выступают
NetTerm и ShellGuard. Попробуйте найти что-то подобное под Linux.

Ответить   Konstantin Korikov Mon, 18 Jul 2005 17:33:36 +0300 (#403408)

 

Konstantin Korikov пишет:

Что верно, то верно... :-(

Я это понимаю, но то этого легче мне не становится.. :-(

При этом зависит какой шрифт и какая раскладка клавиатуры?

Сама СУБД не такая уж и старая.. :-) а вот как ПО написано - это
отдельный разговор...

Наверно все проблемы в том, что Linux-системы не понимают терминал
AT386. В файлах /etc/termcap и /usr/share/terminfo нет упоминания об
этом типе терминала. Поэтому пришлось добавить командой tic, но видимо
нужно ещё что-то...

Разумно, но если разработчик ПО сам до-настроил терминал? Служба
поддержки сказала, что хотите использовать другой тип терминал, то за
дополнительную плату они с удовольствием до-настроят мой тип терминал,
который используется на серваке...

Так загвозка и заключается в том, что до нормальной работы ПО не хватает
настроек на серваке, что бы пользователи работали...
На данный момент устаревший релиз ПО крутится на UnixWare и у
пользовательских эмуляторах установлено AT386.
Сейчас устанавливаю новый релиз на новый сервак, но под LEL4 и резервный
под RHEL3... Вот и мучаюсь...

Ответить   Little KING Tue, 19 Jul 2005 09:09:19 +0600 (#403642)