В последнее время в моем почтовом ящике все чаще стали попадаться письма с просьбой помочь в установке и настройке графической подсистемы X-Window. По большей части это читатели, попробовавшие себя в установке CRUX и других base-дистрибутивов, в которых нет программы, позволяющей проделать это по ходу инсталляции в графическом режиме (см. статью «Каждому — свой крест», МК №14 (237)). Попадались также письма пользователей Debian, RedHat (см. статью «Дело в шляпе», МК №22 (245)) пожелавших установить более современную версию. Дошло уже дошло до того, что начинают угрожать: «Помогите, или снесу вашего пингвина к…» . Он, кстати, совсем и не мой, Linux является зарегистрированной маркой фина Линуса Торвальдса. Я — лишь один из пользователей, предпочитающих эту систему другим.
Текущей стабильной версией на данный момент является шестой полный релиз XFree86 4.3.0 от 27 февраля (http://www.xfree86.org/), продолжающий развитие четвертой версии, начатой в где-то конце 2000 года (первым стабильным был 4.0.2, а не 4.0.0 как бы следовало думать). Практически все производители дистрибутивов включили версию 4.3.0 в свои последние релизы. Следующая, так сказать, полная версия 4.4.0 ожидается приблизительно к концу 2003 года. Но сейчас все изменения можно получить из «снимков» CVS, которые обновляются два раза в месяц (примерно 10 и 25 числа), при этом патч, устраняющий все обнаруженные в настоящее время критические ошибки и ошибки, связанные с безопасностью, можно найти в файле xf-4_3-branch. На момент написания статьи на сайте присутствовала developer-версия 4.3.99.4 от 10 мая, в том числе и в виде патча к предыдущим релизам, которую можно скачать и установить (занимает чуть больше 30 Мб), и базирующийся на 4.3.0 снимок — 4.3.0.1 от 9 мая 2003. Но последний не является официальным выпуском, это пока еще только набор заплат, но после из этого всего (и судя по всему, совсем скоро) будет выпущена промежуточная Update-версия 4.3.1, иначе cписок изменений рискует разрастись до поистине огромных размеров. Дополнительно на сайте можно найти уже заброшеную ветку 3.3.*, последний релиз которой — 3.3.6, к нему также прилагается набор исправлений Xf-3_3-branch. До недавнего времени я, честно говоря, думал, что мне ее с головой хватит, так как видеокарте уже года четыре от роду, и пользовался в основном этой версией. Но просмотрев однажды changelog на сайте http://www.xfree86.org/, я с удивлением обнаружил исправления для своей Riva 128, так что имеет смысл и владельцам старых карт использовать более современную версию. По крайней мере посмотрите Driver Status Document (http://www.xfree86.org/Status.html) — может, увидите свою карту в списке. В современной 4.3.0 поддерживаются все известные на данный момент видеоустройства: 2D в ATI Radeon 9x00 и 3D в Radeon 8500, 9000, 9100, M9, дополнительно к этому — аппаратный TCL, встроенное видео на Intel 845G, 852GM, 855GM, 865G (2D&3D), встроенная графики на NVIDIA nForce2 , GeForce 4 и GeForce FX, поддержка ЖК-дисплея и автоматическое обнаружение DVI-D и DVI-A в чипах SIS, а также автоматическое определение протокола для мыши PS/2, исправления в русской клавиатурной раскладке и многое, многое другое. Так что если у вас установлено самое современное видеооборудование (которое к тому же, может, и не работает), то, как говорится, «Добро пожаловать».
Итак, текущий XFree86 4.3.0 доступен в виде исходников, патчей к предыдущей версии и уже откомпилированных бинарников. Исходные тексты стабильной версии можно найти по адресу ftp://ftp.xfree86.org/pub/XFree86/4.3.0/source. В данном каталоге находится семь основных файлов — X430src-1.tgz, X430src-2.tgz … X430src-7.tgz. В 4 и 5 содержатся шрифты, в 6 и 7 — документация, ну а в 1—3 все остальное. Если шрифты уже есть, и в документации вы не нуждаетесь, то вполне хватит и 1—3 пакетов. После распаковки это все хозяйство занимает чуть больше 300 Мб. По этой же причине я из исходников не собираю, на моем домашнем это все будет компилироваться неделю, если не больше. Если кому интересно, могут попробовать — там есть довольно подробный путеводитель в виде HOWTO. Плюсы данного метода очевидны. Один из самых тяжелых компонентов системы собирается оптимизированным под конкретный процессор, т.е. инструкции MMX, SSE, 3Dnow!, которые, поверьте, отнюдь не пустой звук, будут полностью задействованы. К тому же не надо будет в следующий раз тащить все опять из Интернета, чтобы установить свежую версию, — достаточно взять патч ftp://ftp.xfree86.org/pub/XFree86/4.3.0/patches и скомпилировать с ним все заново. Система будет в самом современном состоянии.
А вот установкой из откомпилированных пакетов сейчас и займемся. Скачать их можно с ftp://ftp.xfree86.org/pub/XFree86/4.3.0/binaries, причем они разбиты по каталогам в зависимости от используемой операционной системы, архитектуры и версии libc. Чтобы не угадывать, что именно скачивать и тем более не загружать лишнее, рекомендуется предварительно загрузить только скрипт Xinstall.sh и запустить его с опцией -check. Вот так:
Он вам сообщит нечто вроде этого:
Небольшое примечание. Скрипт Xinstall.sh должен загружаться в бинарном режиме, а не в текстовом, в противном случае будете получать сообщение command not found. Если не знаете, как изменить режим загрузки, то здесь же лежит аналогичный скрипт, но со специально измененным названием — Xinstall.bin, который после закачки или через «Сохранить как» необходимо переименовать в Xinstall.sh; его браузеры автоматически закачивают в бинарном режиме. Сам же скрипт желательно взять из каталога той версии, которую вы устанавливаете — более старый вариант не всегда способен корректно установить XFree86.
Теперь уже легче определиться с правильным каталогом; заходим внутрь его и видим множество файлов. Из них двенадцать обязательных и одиннадцать опциональных. Обязательные желательно загрузить все, иначе установочный скрипт, возможно, будет ругаться. Сюда входят (некоторые даю с оригинальным пояснением, дабы не исказить смысл):
Xinstall.sh — установочный скрипт (уже есть);
extract — специальная утилита для распаковки архива;
Xbin.tgz — X-клиент и утилиты, а также run-time библиотеки;
Xlib.tgz — файлы и run-time библиотеки;
Xman.tgz — страницы man-руководства;
Xdoc.tgz — документация XFree86;
Xfnts.tgz — основной набор шрифтов;
Xfenc.tgz — Base set of font encoding data (тоже набор шрифтов);
Xetc.tgz — run-time конфигурационные файлы;
Xvar.tgz — Run-time данные;
Xxserv.tgz — XFree86 X-сервер
Xmod.tgz — дополнительные X-модули к XFree86.
Примечание. Иногда браузеры коверкают утилиту extract при загрузке. Чтобы не возиться с настройками, используйте аналогичную, но с другим именем — extract.exe. После этого проблем быть не должно (ее даже переименовывать не надо — Xinstall.sh ищет по обоим именам). Если какой-либо из утилит, перечисленных выше, нет (например, под Darwin — Xmod.tgz), ничего страшного — просто под данной платформой в ней нет необходимости. Утилита extract используется для распаковки архивов. Она представляет собой несколько модернизированную версию утилиты GNU tar со встроенным кодом функции gzip. Одно важное отличие состоит в том, что extract разлинковывет существующие файлы перед тем как записать новые, что большинство версий tar по умолчанию не делают — это очень существенно, если инсталляция производится поверх существующей версии X.
Следующие одиннадцать являются опциональными (если полазить по каталогам, можно найти еще несколько), и их не обязательно устанавливать, хоть некоторые, вроде кириллических шрифтов (если таковые отсутствуют в системе), весьма критичны. Итак:
Xfsrv.tgz — сервер шрифтов;
Xnest.tgz — Nested X server;
Xprog.tgz — заголовочные, конфигурационные файлы и библиотеки, необходимые при компиляции (очень рекомендую, без них некоторые программы откажутся компилироваться — намучился в свое время, пока не установил);
Xprt.tgz — X Print server;
Xvfb.tgz — Virtual framebuffer X server;
Xf100.tgz — 100-dpi шрифты;
Xfcyr.tgz — кириллические шрифты;
Xfscl.tgz — масштабируемые шрифты (Speedo, Type1 и TrueType);
Xhtml.tgz — HTML-версия документации;
Xps.tgz — PostScript-версия документации;
Xjdoc.tgz — документация на Japanese (ну о-очень нужная вещь :-)).
Установить все это хозяйство можно двумя способами: при помощи скрипта Xinstall.sh и вручную. Разработчики рекомендуют использовать первый вариант как более простой и удобный. Установка вручную может понадобиться при неудаче, что в большинстве случаев происходит, если не скачаны все основные пакеты; либо же, дополнительно, если есть необходимость просто добавить некоторые не установленные раннее пакеты, чтобы не ломать уже построенное и не повторять всю процедуру сначала.
Перед началом процесса установки рекомендуется сохранить старые файлы, относящиеся к XFree86 (если она имелась в системе), чтобы иметь возможность отката к рабочему варианту в случае чего (скрипт напомнит вам об этом на всякий случай). Для этого скопируйте куда подальше каталоги /etc/X11 и /usr/X11R6. Затем регистрируемся как root, переходим в каталог, где находятся установочные файлы, и даем команду # sh Xinstall.sh. Да, чуть не забыл. Установку желательно производить в консольном режиме: если попытаетесь запустить скрипт при запущенном X-Window (обмануть не удастся — проверяется переменная $DISPLAY), скрипт по-хорошему предупредит вас об этом — и, поверьте, не зря, испытано на собственной шкуре. Проще всего установить уровень запуска 3 (для RedHat и К) и полностью перезагрузить систему, или остановить все приложения, так или иначе связанные с Х, включая XDM (KDM, GDM). Работа скрипта сводится в основном к распаковке архивов и рассовыванию их по нужным каталогам, при этом в зависимости от устанавливаемой системы запускаются еще некоторые программы со специфическими для этой системы параметрами (например, ldconfig — чтобы обновить базу установленных библиотек). При этом по ходу пользователю задаются непонятные вопросы; в большинстве случаев (если сохранена копия старых файлов) на них можно отвечать нажатием Enter (ОК). Старые файлы (которые, опять же, предлагается сохранить) замещаются новыми, а если некоторые приложения установлены дополнительно, то они останутся незатронутыми (вопрос, правда, в другом — будут ли они потом снова работать с новой версией?) Если в некоторые файлы внесены изменения вручную, которые хочется оставить, можно при запросе отказаться от их перезаписи и попробовать запуститься со старой версией — если ничего не получится, новый файл всегда можно будет извлечь из архива вручную и водрузить на свое место. После выполнения обязательной программы при наличии дополнительных компонентов скрипт будет спрашивать о необходимости установки индивидуально для каждого. После запуска программы ldconfig следующим шагом обновляется файл fonts.dir, для того чтобы можно было правильно работать со шрифтами. Затем инсталлятор выясняет, имеются ли файлы termcap или terminfo. Если найдутся termcap'ы, то будут выданы советы, помогающие его модифицировать, если terminfo, то скрипт предложит обновить их.
В конце скрипт спрашивает, создавать ли символические ссылки для OpenGL-библиотек и файлов заголовков; в большинстве случаев можно спокойно соглашаться, а если будут вноситься необратимые изменения вроде удаления файлов, то вас обязательно предупредят об этом.
Наконец, инсталлятор спросит о необходимости создания ссылки на утилиту rstart. На современных системах эта ссылка несущественна, так что можно давать ответ по умолчанию — «no». Утвердительно стоит отвечать только в том случае, если знаете, что это действительно нужно. Если потом обнаружится, что такая ссылка нужна, ее легко можно создать при помощью команд