Fink

Использование X11 - 7. Устранение проблем, возникших в связи с XFree86

7.1 При запуске XDarwin она практически сразу завершает работу или зависает

Прежде всего: не паникуйте! Есть масса вещей, которые плохо работают с XFree86, и многие из них могут вызывать сбои при запуске. Кроме того, нет ничего необычного в том, что XDarwin прекращает работу, когда сталкивается в проблемами запуска. В данном разделе мы попытаемся отразить все проблемы, с которыми вы можете столкнуться. Но прежде всего вам надо собрать всю необходимую информацию:

Версия XDarwin. Вы можете найти версию XDarwin в искателе (Finder), щелкнув один раз на иконке XDarwin и выделив "Show Info" в меню. Версия отражает возрастающие номера новых пробных бинарных версий в рамках проекта XonX, и таким образом "1.0a1" фактически может быть любой версией между 1.0a1 и 1.0a2.

Сообщения об ошибках. Далее даны основные виды точного описания отдельных возникающих проблем. От вашего способа запуска XDarwin зависит форма получения сообщения об ошибке. Если вы запускаете startx из терминального окна, сообщение появится непосредственно в этом окне. Не забывайте, что можно использовать прокрутку. Если вы запускаете XDarwin при помощи двойного щелчка на иконке, сообщение поступит в системный журнал, к которому вы можете получить доступ через приложение консоли в каталоге утилит. Убедитесь, что выбираете правильный (т.е. последний) набор сообщений.

Начнем со списка сообщений, которые вы можете увидеть:

_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set
                to root
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root

Классификация ошибки: безобидная. X11 создает скрытые каталоги в /tmp для хранения "файлов" разъемов для локальных соединений. Из соображений безопасности X11 предпочитает, чтобы эти каталоги принадлежали суперпользователю, но поскольку они в любом случае пишутся пословно, в их работе не возникает проблем. (Прим.: Их владение суперпользователем крайне затруднительно, т.к. Mac OS X удаляет /tmp при перезагрузке, а работе XDarwin не присущи привилегии суперпользователя, впрочем они ей и не требуются.)

QuartzAudioInit: AddIOProc returned 1852797029
-[NSCFArray objectAtIndex:]: index (2) beyond bounds (2)
kCGErrorIllegalArgument : CGSGetDisplayBounds (display 35434400)
No core keyboard

Классификация ошибки: сомнительная. Это проистекающие ошибки в результате попытки сервера вновь настроить самого себя после предыдущей ошибки. В процессе этого печатается другая копия баннера запуска, после чего появляется одно или несколько из вышеуказанных сообщений, поскольку повторная настройка сервера не может работать должным образом в поврежденных версиях XDarwin. Если вы получаете подобные сообщения, надо сделать прокрутку в терминальном окне соответствующей консоли и поискать другой набор баннера и сообщений. Это относится ко всем версиям вплоть до XDarwin 1.0a3 включительно; данная проблема была решена после выпуска 1.0a3.

cat: /Users/chrisp/.Xauthority: No such file or directory

Классификация ошибки: практически безобидная. Неизвестно, как эти сообщения приходят, но на работу они не влияют. Можно от них избавиться, применив touch .Xauthority в базовом каталоге.

Gdk-WARNING **: locale not supported by C library

Классификация ошибки: безобидная. Она просто отражает свое содержание и не препятствует работе приложения. Более подробно см. ниже.

Gdk-WARNING **: locale not supported by Xlib, locale set
                to C Gdk-WARNING **: can not set locale modifiers

Классификация ошибки: серьезная, но не фатальная. Такие сообщения могут появляться в дополнение к вышеуказанным. Они означают, что локальные файлы данных XFree86 отсутствуют. Нам представляется, что они появляются невоспроизводимым образом при построении Free86 от исходного кода. Большинство приложений будут продолжать работу, за очевидным исключением GNU Emacs.

Unable to open keymapping file USA.keymapping. Reverting
                to kernel keymapping.

Классификация ошибки: чаще всего фатальная. Это может произойти с XDarwin 1.0a1 при активации опции раскладки клавиатуры "Загрузить из файла" ("Load from file"). Данная версия нуждается в полном маршруте при настройке загрузки файла через диалог параметров, но производит автоматический поиск при ее передаче на строку команд. Это сообщение обычно сопровождается другим сообщением с "assert", приведенным ниже. Для исправления ошибки выполните нижеуказанные инструкции.

Fatal server error: assert failed on line 454 of darwinKeyboard.c!
Fatal server error: Could not get kernel keymapping! Load
                keymapping from file instead.

Классификация ошибки: фатальная. Изменения, внесенные Apple в Mac OS X 10.1, повредили код XFree86, считывающий раскладку клавиатуры из ядра операционной системы; в результате появилось данное сообщение. Надо использовать опцию "Загрузить из файла" ("Load from file") в Mac OS X 10.1. Настройка находится в диалоге параметров XDarwin. Убедитесь, что файл выделен (т.е. используйте кнопку "Pick file") - простая активация отмечаемой кнопки недостаточна в некоторых версиях XDarwin. Если вы не можете попасть в диалог параметров из-за того, что XDarwin закрывается прежде, чем у вас появляется возможность это сделать, используйте startx -- -quartz -keymap USA.keymapping в терминальном окне. Обычно этого достаточно для запуска XDarwin; затем вы можете отразить постоянный выбор в диалоге параметров.

Fatal server error: Could not find keymapping file .

Классификация ошибки: фатальная (о чем и сообщается). Данная ошибка возникает по причине отсутствия файлов раскладки клавиатуры в Panther. Надо инсталлировать xfree86-4.3.99-16 или более позднюю версию - они не нуждаются в файлах раскладки клавиатуры.

Warning: no access to tty (Inappropriate ioctl for
                device). Thus no job control in this shell.

Классификация ошибки: в большинстве случаев безобидная. XDarwin 1.0a2 и более поздние версии запускают интерактивную оболочку на заднем плане для запуска клиентского файла (.xinitrc). Это делается для того, чтобы вам не пришлось добавлять определения для настройки PATH в этом файле. Некоторые оболочки жалуются, что они не подсоединены к реальному терминалу, но на это можно не обращать внимания, потому что оболочки не используются в целях управления заданиями и т.п.

Fatal server error: failed to connect as window server!

Классификация ошибки: фатальная. Она означает, что сервер консольного режима (для чистой Darwin) начал работу, пока вы были в Aqua. Как правило, это происходит, если для инсталляции была использована официальная бинарная дистрибуция XFree86 без тарбола Xquartz.tgz. Это также может произойти, если алиасы в /usr/X11R6/bin перепутались или вы использовали команду XDarwin в терминальном окне для запуска сервера (в последнем случае надо вместо нее использовать команду startx - см. Starting XFree86).

В любом из этих случаев вы можете использовать ls -l /usr/X11R6/bin/X* и проверить выходные данные. Вы должны увидеть четыре соответствующих записи: X, алиас со ссылкой на XDarwinStartup;XDarwin, выполняемый файл (это сервер с консольным режимом); XDarwinQuartz, алиас со ссылкой на /Applications/XDarwin.app/Contents/MacOS/XDarwin; XDarwinStartup, небольшой выполняемый файл. Если какие-либо из данных записей отсутствуют или ссылаются на другие файлы, надо сделать исправление. Способ исправления зависит от способа, использованного вами при инсталляции XFree86. Если вы инсталлировали XFree86 при помощи Fink, надо вновь инсталлировать пакет xfree86 (или xfree86-rootless для OS 10.2 и более ранних версий). Если вы инсталлировали его самостоятельно, надо получить файлы из копии Xquartz.tgz.

The XKEYBOARD keymap compiler (xkbcomp) reports: >
                Error: Can't find file "unknown" for geometry
                include > Exiting > Abandoning geometry file
                "(null)" Errors from xkbcomp are not fatal to
                the X server

Классификация ошибки: в большинстве случаев безобидная. Как следует из сообщения, это не фатальная ошибка. Насколько мне известно, XDarwin вообще не использует расширение XKB. Возможно, какая-то клиентская программа пытается его тем не менее использовать ...

startx: Command not found.

Классификация ошибки: фатальная. Это может произойти с XDarwin 1.0a2 и 1.0a3, если ваши файлы инциализации оболочки не содержат настроек для добавления /usr/X11R6/bin к переменной величине PATH. Если вы используете Fink и не изменили настройки оболочки по умолчанию, для исправления должно быть достаточно добавления строки source /opt/sw/bin/init.csh к .cshrc в базовом каталоге (как рекомендуется в инструкциях Fink).

_XSERVTransSocketUNIXCreateListener:
                ...SocketCreateListener() failed
                _XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error: Cannot establish any listening
                sockets - Make sure an X server isn't already running

Классификация ошибки: фатальная. Она происходит после случайного одновременного запуска нескольких копий XDarwin или после некорректного выключения XDarwin (н-р, при зависании). Также это может быть проблема полномочий доступа к файлам разъемов для локальных соединений. Можно попытаться воспользоваться rm -rf /tmp/.X11-unix. В большинстве случаев также помогает повторный запуск компьютера (когда Mac OS X автоматически очищает /tmp, а сетевой пакет перезагружается)

Xlib: connection to ":0.0" refused by
                server Xlib: Client is not authorized to connect to Server

Классификация ошибки: фатальная. Клиентские программы не могут установить соединение с сервером отображения (XDarwin), потому что используют ложные опознавательные данные. Ошибка может быть вызвана некоторыми инсталляциями VNC при запуске XDarwin через sudo и, вероятно, другими непонятными событиями. Обычное исправление состоит в удалении файла .Xauthority (хранящего опознавательные данные) в базовом каталоге и повторном создании пустого файла:

cd rm .Xauthority touch .Xauthority

Еще одна распространенная причина отказов при запуске XFree86 - некорректный файл .xinitrc. Файл .xinitrc запускается и по какой-то причине практически сразу прекращает сеанс.xinit интерпретирует это как "завершение сеанса пользователя" ("the user's session has ended") и уничтожает XDarwin. См. раздел .xinitrc для получения более подробной информации. Не забудьте, что надо настроить PATH и иметь в распоряжении одну долговременную программу, которая запускается не на заднем плане. Хорошей идеей является добавление exec xterm для возврата в исходный режим, когда невозможно найти менеджер окон и т.п.

7.2 Черные иконки на панели GNOME и в меню приложения GNOME

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

На данный момент ситуация такова, что расширение MIT-SHM протокола X11 практически не используется в Darwin и Mac OS X. Есть два способа дезактивировать расширение протокола: на сервере и на клиенте. На серверах XFree86, инсталлированных при помощи Fink (т.e. пакетах xfree86-server и xfree86-rootless), оно уже дезактивировано. GIMP и панель GNOME также были модифицированы. Если у вас есть черные иконки в другом приложении, запустите его с использованием опции строки команд --no-xshm.

7.3 Клавиатура не работает в XFree86

Это известная проблема, которая пока, насколько мы знаем, влияет только на портативные компьютеры (PowerBook, iBook). Раньше для ее решения использовалась опция раскладки клавиатуры "Load from file". Сейчас она стала опцией по умолчанию, поскольку старый способ (считывание раскладки из ядра) перестал работать в Mac OS X 10.1. Если у вас эта опция не активирована, можно это сделать в диалоге параметров XDarwin. Надо отметить пункт "Load from file" и выделить файл раскладки клавиатуры для загрузки. После перезагрузки XDarwin ваша клавиатура должна функционировать лучше (см. текст далее).

Если вы запускаете XFree86 со строки команд, можно перенести имя файла раскладки клавиатуры для загрузки в качестве опции, н-р:

startx -- -quartz -keymap USA.keymapping

7.4 Клавиша возврата (Backspace) не действует

Это происходит, когда вы используете опцию "Load keymapping from file", описанную выше. Файлы раскладки описывают клавишу Backspace как "Delete", а не "Backspace". Можно исправить положение, внеся следующую строку в файл .xinitrc:

xmodmap -e "keycode 59 = BackSpace"

Если не ошибаюсь, XDarwin 1.0a2 и более поздние версии имеют код, автоматически корректно отображающий эту клавишу.

7.5 "Warning: locale not supported by C library"

Подобные сообщения очень часты, но безобидны. Они означают только то, о чем сообщают - интернационализация не поддерживается стандартной библиотекой C и программа будет использовать по умолчанию английский язык для сообщений, форматов дат и т.п. Есть несколько способов реагирования на данную проблему:

Следующий: 8. Подсказки по использованию