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