FreeBSD 4.x.x, XFree86 4.x.x и русские буквы в linux-netscape-4.7x
Известный вопрос: установил XFree86 в системе FreeBSD, все настроил,
русский, KOI8-R работает, установил linux-netscape - не
вводятся русские буквы, что делать?
По материалам конференции fido7.ru.unix.bsd, рекомендации Ивана Паскаля:
С чем связано:
В XFree 4.0.2 (ну и в 4.0.3) несколько поменялись файлы с описанием locale
- X11R6/lib/X11/locale/.../XLC_LOCALE.
Эти файлы непосредственно использует только Xlib, поэтому никаких неприятностей
не должно быть, если и XLC_LOCALE и Xlib взяты из одной версии "иксов".
Netscape:
В портах две группы Netscap'овских навигаторов/комуникаторов:
- "родные" freebsd'шные;
- linux'овые.
Но проблема у них схожая:
- freebsd'шные Netscape используют Xlib из XFree86-aoutlibs, а там "либы" от
XFree86 3.3.6
- linux'овые используют Xlib из compat/linux, которые примерно той же версии
XFree.
Получается, что Netscape в любом случае использует старую Xlib, а XLC_LOCALE
эта Xlib "хватает" уже новые для нее неподходящие.
Что делать?
Ну, по хорошему надо бы обновлять Xlib. Для compat/linux
я это сделал элементарно - добыл Xbin.tgz из версии XFree 4.0.2
для linux и все "либы" оттуда просто свалил в нужную директорию
/compat/linux.
Где взять XFree86-aoutlibs с версией >= 4.0.2 - не знаю.
Конечно можно самостоятельно собрать из исходников, но это
не так то просто (особенно если надо собрать только Xlib, а не
все "иксы").
Если дело только в Netscape, можно поступить проще - не трогать
Xlib, а подменить XLC_LOCALE. Но естественно, подменять нужно
только для Netscape, поэтому существующие XLC_LOCALE трогать
нельзя.
Вариант с locale:
- найти где-нибудь "старые" XLC_LOCALE (например от 3.3.6)
хотя бы для koi8-r (или какая там у вас любимая locale)
- развернуть их в отдельной директории (ну например
X11R6/lib/X11/locale-3). Напомню, что если даже вам хватит
только koi8-r/XLC_LOCALE, все равно надо еще файлики
locale.dir и locale.alias.
- Последнее действие - обяснить Netscape, что locale надо
брать в другом месте. Для этого надо выставить "переменную
окружения" XLOCALEDIR. Понятно, что значение этой переменной
должно быть - полный путь до вашей директории locale-3.
Ну и напомню, что сам "бинарник" Netscape запускается
не напрямую, а через скриптик 'netscape' или 'communicator'
или что-то вроде этого. Вот туда проще всего поместить
эту самую XLOCALEDIR. Например -
export XLOCALEDIR; XLOCALEDIR=/usr/X11R6/lib/X11/locale-3
Вариант с Xlib:
- находим ftp архив с XFree86 4.0.2 binaries для Linux, из
XFree86/4.0.2/binaries/Linux-ix86-glibc21/ - Xbin.tgz и извлекаем
содержимое lib в /compat/linux/usr/X11R6/lib
здесь linux_xlib.tgz мой работающий
набор библиотек для linux_base6.1 и контрольная сумма md5_checksum md5.
- запускаем /compat/linux/sbin/ldconfig
- правим Netscape.ad и кладем в /usr/X11R6/lib/X11/app-defaults - Netscape
здесь Netscape для linux-netscape-4.79,
или diff patch-netscape для
patch < patch-netscape.
Copyleft Andrey Lavrentyev
тоже body>