Ejecución de X11 - 7. Resolución de problemas con XFree86
7.1 Cuando lanzo XDarwin, termina o se cuelga inmediatamente.
Antes de nada: ¡No te asustes! Hay montones de cosas que pueden no funcionar correctamente con XFree86 y un buen número de ellas pueden causar fallos de arranque. De hecho, no es inusual que Darwin se cuelgue si se encuentra problemas de arranque. Esta sección intenta proporcionar una lista de problemas posibles. Pero, lo primero es recopilar dos importantes informaciones:
Versión de XDarwin. Puedes encontrar la versión de XDarwin version en el Finder haciendo clic una sóla vez en el icono de XDarwin y seleccionando "Mostrar Información" desde el menú. La versión se incrementa sólamente cuando el proyecto XonX saca una nueva implementación binaria de prueba. Es decir "1.0a1" puede ser cualquier versión entre 1.0a1 y 1.0a2.
Mensajes de error.
Son esenciales para la comprensión de los problemas a los que nos enfrentaremos.
Cómo obtener los mensajes de error depende de la forma en que se lance XDarwin.
Si ejecutaste startx
desde una ventana de Terminal,
tendrás los mensajes en esa ventana. Recuerda que puedes hacer "scroll"
hacia arriba para buscar los mensajes.
Si arrancaste XDarwin mediante doble clic en el icono, los mensajes terminarán en
el log del sistema, al que se puede acceder a través de la aplicación Consola en
la carpeta Utilidades.
Asegúrate de coger el conjunto correcto de errores, i.e., el último.
Comencemos con una lista de mensajes posibles:
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
Tipo: Inofensivo. X11 crea directorios ocultos en /tmp para almacenar los ficheros socket de las conexiones locales. Por razones de seguridad X11 prefiere que estos directorios sean propiedad del superusuario (root), pero como son accesibles para escritura por cualquiera, X11 funcionará sin problemas. (Nota: Es muy difícil definir al superusuario como propietario de estos directorios porque Mac OS X vacía /tmp en los reinicios y XDarwin se ejecuta sin privilegios -que no necesita- de superusuario).
QuartzAudioInit: AddIOProc returned 1852797029
-[NSCFArray objectAtIndex:]: index (2) beyond bounds (2)
kCGErorIllegalArgument : CGSGetDisplayBounds (display 35434400)
No core keyboard
Tipo: Falso. Hay errores que aparecen cuando el servidor intenta restablecerse después de un error previo. Se imprime una nueva copia de los mensajes de arranque, seguidos de uno o más de los mensajes anteriores porque el reinicio del servidor no funciona en determinadas versiones de XDarwin. Cuando veas estos mensajes, simplemente ve más arriba en la ventana del Terminal (resp. Consola) y mira otro conjunto de mensajes. Esta situación ocurre en todas las versiones superiores o iguales a la 1.0a3 de XDarwin. El problema fue solucionado después de que 1.0a3 fuera publicada.
cat: /Users/chrisp/.Xauthority: No such file or directory
Tipo: Casi inofensivo.
No se sabe de dónde vienen estos mensajes pero se sabe que no tienen
impacto ninguno en el desarrollo de las operaciones. Pueden eliminarse
ejecutando touch .Xauthority
en tu directorio raíz.
Gdk-WARNING **: locale not supported by C library
Tipo: Inofensivo. Significa justo lo que dice: el sistema locale no es soportado por la biblioteca C, pero no impide trabajar a la aplicación. Para más información, ver más adelante.
Gdk-WARNING **: locale not supported by Xlib, locale set to C Gdk-WARNING **: can not set locale modifiers
Tipo: Malo, pero no fatal. Estos mensajes pueden aparecer junto al anterior. Significa que los ficheros de datos locale de XFree86 no están. Aparentemente este mensaje aparece de forma errática cuando se constuye XFree86 compilándolo desde las fuentes. La mayor parte de las aplicaciones seguirán funcionando. Una excepción notable es GNU Emacs.
Unable to open keymapping file USA.keymapping. Reverting to kernel keymapping.
Tipo: A manudo fatal. Puede suceder con XDarwin 1.0a1, con la opción de teclado "Load from file" habilitada. Esta versión necesita una ruta completa para cargar un fichero desde el diálogo de preferencias, pero busca automáticamente el fichero si se le solicita desde la línea de comandos. Normalmente, a este mensaje .e sigue el "assert" que viene a continuación. Para evitarlo, sigue las instruciones que se dan más adelante.
Fatal server error: assert failed on line 454 of darwinKeyboard.c!
Fatal server error: Could not get kernel keymapping! Load keymapping from file instead.
Tipo: Fatal.
Los cambios que Apple hizo en Mac OS X 10.1 rompen el código de XFree86
que lee el formato de teclado desde el núcleo del sistema operativo resultando este mensaje de error.
Debes usar la opción de keymapping "Load from file" en Mac OS X 10.1., en las preferencias de XDarwin.
Asegúrate que hay un fichero seleccionado, (i.e. usa el botón "Pick file") -
activar simpelmente la caja de comprobación puede no ser suficiente en
algunas versiones de XDarwin.
Si no puedes obtener el diálogo de Prefencias porque
XDarwin se cierra antes de darte una oportunidad, simplemente ejecútalo
desde el Terminal con el comando
startx -- -quartz -keymap USA.keymapping
.
Esto permite normalmente que XDarwin arranque, y entonces puedes hacer
la elección permanente en el menú de Preferencias.
Fatal server error: Could not find keymapping file .
Tipo: Fatal (como se indica). Este error se debe a la ausencia de mapas de teclado (keymapping) en Panther. Necesitas instalar xfree86-4.3.99-16
o posterior, porque estas versiones no necesitan esos ficheros.
Warning: no access to tty (Inappropriate ioctl for device). Thus no job control in this shell.
Tipo: Bastante inofensivo. XDarwin 1.0a2 y posteriores lanzan un shell interactivo en segundo plano para ejecutar el fichero de arranque de clientes (.xinitrc). Esto es así para uqe no sea necesariuo añadir sentencias para establecer la variable PATH en tu fichero. Algunas shells indican que no están conectadas a un terminal real, pero el mensaje puede ser ignorado porque esta instancia de shell no se usa para nada que requiera el control de trabajos ni procesos similares.
Fatal server error: failed to connect as window server!
Tipo: Fatal.
Significa que el servidor en modo consola (para Darwin puro) arrancó
mientras se estaba en Aqua.
Normalmente esto ocurre si se ha instalado el binario de la
distribución oficial de XFree86 pero no la bola tar Xquartz.tgz.
También puede ocurrir cuando se pierden los enlaces simbólicos
en /usr/X11R6/bin o cuando se invoca el comando XDarwin
en una ventana de termianl para arrancar el servidor (se debe
usar startx en lugar de ese comando, véase
Arrancando XFree86).
En cualquier caso, puedes ejecutar ls -l /usr/X11R6/bin/X*
y comprobar la salida.
Hay que examinar cuatro entradas relevantes:
X
, un enlace simbólico apuntando a XDarwinStartup
;
XDarwin
, un fichero ejecutable (esto es el servidor
en modo consola);
XDarwinQuartz
, un enlace simbólico apuntando a
/Applications/XDarwin.app/Contents/MacOS/XDarwin
;
y XDarwinStartup
, pequeño fichero ejecutable.
Si algunos de estos ficheros no existe o está apuntando a algún lugar
equivocado, debes corregirlo.
Cómo hacer esto depende del modo en que hayas instalado XFree86.
Si lo instalaste desde Fink entonces necesitas reinstalar el paquete
xfree86
(o xfree86-rootless
para OS 10.2 y
anteriores). Si lo instalaste tú mismo, obtén los ficheros desde
una copia 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
Tipo: Casi inofensivo. Como el mensaje dice, no es fatal. Hasta donde sabemos. Xdarwin no utiliza la extensión XKB para nada. Quizás algún cliente intenta usarla de algún modo...
startx: Command not found.
Tipo: Fatal.
Ocurre con XDarwin 1.0a2 y 1.0a3 cuando los ficheros
de inicialización del shell no han tienen nigún comando para añadir /usr/X11R6/bin a la variable PATH.
Si usas Fink y no has cambiado tu shell por defecto, debería ser suficiente
añadir la línea source /opt/sw/bin/init.csh
al fichero
.cshrc
en tu directorio de usuario.
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed _XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error: Cannot establish any listening sockets - Make sure an X server isn't already running
Tipo: Fatal.
Puede suceder si ejecutas accidentalmente varias instancias de
XDarwin a la vez o después de un cierre sucio (i.e. crash) de XDarwin.
También puede ser debido a un problema de permisos de ficheros con los
sockets de las conexiones locale.
Puedes intentar limpiar esto con rm -rf /tmp/.X11-unix
.
Reiniciar el ordenador también puede ayudar (Mac OS X
limpia automáticamente /tmp cuando arranca y la pila de red se reinicia).
Xlib: connection to ":0.0" refused by server Xlib: Client is not authorized to connect to Server
Tipo: Fatal. Los programas clientes no pueden conectarse con el servidor de visualización (XDarwin) porque este usa datos falsos de autentificación. Puede ser causado por algunas instalaciones de VNC, por ejecutar XDarwin a través sudo, y probablemente por algunos otros raros accidentes. El método normal para arreglar esto es borrar el fichero .Xauthority (que almacena los datos de autentificación) en tu directorio de usuario y re-crear un fichero vacío:
cd rm .Xauthority touch .Xauthority
Otra causa común de fallos en el arranque de XFree86
es un fichero .xinitrc
incorrecto.
El fichero .xinitrc
se ejecuta y, por alguna
razón, termina casi inmediatamente.
xinit
interpreta esto como "la sesión de usuario
ha terminado" y finaliza XDarwin.
Véase la sección .xinitrc
para más detalles.
Recuerda configurar la variable PATH y tener un programa de larga
vida que no arranque en segundo plano.
Es una buena idea añadir exec xterm
como ayuda de emergencia
cuando no se halla el gestor de ventanas o similar.
7.2 Iconos negros en el panel GNOME panel o en el menú de una aplicación GNOME
Un problema común es que los iconos u otras imágenes se ven como rectángulos o siluetas negras. En último extremo, esto está provocado por limitaciones del núcleo del sistema operativo. Apple ha sido informada del problema, pero por lo visto hasta ahora no parece que quiera arreglarlo. Véanse los archivos del Darwin bug report para más detalles.
La situación actual es que la extensión MIT-SHM del protocolo
X11 es prácticamente inutilizable en Darwin y en Mac OS X.
Hay dos formas de anular este protocolo: en el servidor y en los clientes.
Los servidores XFree86 instalados por Fink (i.e. los paquetes xfree86-server and
xfree86-rootless) lo tienen apagado.
El GIMP y el panel GNOME panel también.
Si notas iconos negros en otra aplicación, arranca con la opción
--no-xshm
en la línea de comandos.
7.3 El teclado no funciona en XFree86
Un problema conocido que sólamente afecta a los portátiles (PowerBook, iBook). La opción de mapa de teclado "Load from file" en las preferencias de XDarwin se implementó para trabajar con este problema. Ahora se ha convertido en el método por defecto porque el método antiguo (leer el mapa desde el núcleo) dejó de funcionar con Mac OS X 10.1. Si no tienes habilitada esta opción, puedes hacerlo en el diálogo de Preferencias de XDarwin. Comprueba la caja de comprobación de "Load from file" y selecciona el fichero de teclado a cargar. Tras reiniciar XDarwin, el teclado debería funcionar (véase abajo).
Si estás arrancando XFree86 desde la línea de comandos, puedes pasarle el nombre del fichero de teclado como una opción, así:
startx -- -quartz -keymap USA.keymapping
7.4 La tecla de borrar no funciona
Ocurre cuando usas la opción "Load keymapping from file" descrita anteriormente. El fichero de mapeo describe la tecla de borrar como "Delete", no como "Backspace". Se puede corregir poniendo la siguiente línea en tu fichero .xinitrc file:
xmodmap -e "keycode 59 = BackSpace"
XDarwin 1.0a2 y posteriores poseen el código necesario para mapear la tecla de borrar adecuadamente.
7.5 "Warning: locale not supported by C library"
Mensajes comunes, pero inofensivos. Significan lo que dicen: la internacionalización no está soportada a través de las bibliotecas C estándares, el programa usará los mensajes en inglés por defecto, formatos de fecha y así sucesivamente... Hay varias formas de comportarse con respecto a ésto:
-
Ignorar los mensajes.
-
Evitar los mensales eliminando la variable de entorno LANG. Nótese que esto eliminará la internacionalización de los programas que realmente la soportan (vía gettext/libintl). Ejemplo para .xinitrc:
unset LANG
Ejemplo para .cshrc:
unsetenv LANG
-
(Sólo 10.1) Usa el paquete de Fink
libxpg4
. Construye una pequeña biblioteca que contiene únicamente funciones locale operativas y está preparada para cargarse antes de las variables del sistema (usando la variable de entorno DYLD_INSERT_LIBRARIES). Debes tener una variable de entorno totalmente cualificada, e.g.de_DE.ISO_8859-1
en vezde
ode_DE
. -
Pídele a Apple que incluya soporte real para locale en las futuras versiones de Mac OS X.
Siguiente: 8. Consejos de uso