Executando o X11 - 7. Resolução de problemas com o XFree86
7.1 Quando inicio o XDarwin, ele termina ou falha quase que de imediato
Em primeiro lugar: não entre em pânico! Há várias coisas que podem dar errado com o XFree86 e um bom número delas podem causar falhas de inicialização. Além disso, não é incomum que o XDarwin falhe quando apresenta problemas de inicialização. Esta seção tenta fornecer uma lista abrangente de problemas pelos quais você talvez passe. Mas antes você precisa obter duas informações importantes:
A versão do XDarwin. Você pode encontrar a versão do XDarwin no Finder clicando uma única vez no ícone XDarwin e então escolhendo a opção "Obter Informações" ("Show Info") no menu. A versão só é incrementada quando uma versão binária de teste é feita pelo projeto XonX, então "1.0a1" pode na verdade ser qualquer versão entre 1.0a1 e 1.0a2.
Mensagens de erro. São fundamentais para identificar
precisamente o problema pelo qual você está passando. A forma como você
recebe as mensagens de erro depende de como você iniciou o XDarwin. Se
você executou startx
em uma janela do Terminal, você terá as
mensagens ali nessa janela. Lembre-se de que você pode navegar para cima.
Se você iniciou o XDarwin através de um duplo clique no ícone, as
mensagens acabam indo para o log do sistema, o qual você pode acessar
através do aplicativo Console no diretório Utilitários. Assegure-se de
escolher o conjunto correto de mensagens, isto é, o último.
Começamos por uma lista de mensagens que você possa encontrar:
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
Classe: não causa danos. O X11 cria diretórios escondidos em
/tmp
e armazena "arquivos" de sockets para conexões
locais. Por razões de segurança, o X11 prefere que esses diretórios
tenham root como proprietário mas, como esses arquivos têm permissão de
escrita para todos os usuários, o X11 rodará sem problemas. (Observação:
é razoavelmente difícil que esses diretórios tenham root como
proprietário já que o Mac OS X zera o diretório /tmp
quando é reiniciado e o XDarwin não executa (nem precisa executar) com
privilégio de root.)
QuartzAudioInit: AddIOProc returned 1852797029
-[NSCFArray objectAtIndex:]: index (2) beyond bounds (2)
kCGErrorIllegalArgument : CGSGetDisplayBounds (display 35434400)
No core keyboard
Classe: falso. Esses são erros que surgem quando o servidor tenta reiniciar-se após um erro prévio. Durante este processo, uma outra cópia da mensagem de inicialização é exibida, seguida por uma ou mais das mensagens acima porque a reinicialização do servidor não funciona de fato nas versões do XDarwin afetadas. Então quando você vir mensagens como estas, pagine para na janela do Console/Terminal e procure por um outro conjunto de mensagem de inicialização e mensagens. Isto afeta todas as versões até XDarwin 1.0a3 inclusive; foi corrigido após a versão 1.0a3 ser lançada.
cat: /Users/chrisp/.Xauthority: No such file or directory
Classe: em geral, não causa danos. Não se sabe de onde vêm essas
mensagens e elas aparentam não ter impacto nas operações. Você pode
livrar-se delas executando touch .Xauthority
no seu
diretório home.
Gdk-WARNING **: locale not supported by C library
Classe: não causa danos. Isto apenas significa o que diz -- local não suportado pela biblioteca C -- e não fará com que a aplicação deixe de funcionar. Para mais informações, veja abaixo.
Gdk-WARNING **: locale not supported by Xlib, locale set to C Gdk-WARNING **: can not set locale modifiers
Classe: ruim, mas não fatal. Estas mensagens podem aparecer em complemento às acima. Isto indica que os arquivos de dados de localização do XFree86 não estão presentes. Aparentemente isto acontece quando se compila o XFree86 a partir do código fonte, mas não é reproduzível. A maior parte das aplicações ainda funciona mas o GNU Emacs é uma exceção notável.
Unable to open keymapping file USA.keymapping. Reverting to kernel keymapping.
Classe: geralmente fatal. Isto pode acontecer com o XDarwin 1.0a1 e a opção de mapeamento de teclado "Load from file" habilitada. Essa versão precisa de um caminho completo quando o arquivo a ser carregado é definido pela caixa de diálogo Preferências (Preferences), mas procura automaticamente quando é passado pela linha de comando. A mensagem será geralmente seguida pela mensagem "assert" mostrada abaixo. Para corrigir este problema, siga as instruções abaixo.
Fatal server error: assert failed on line 454 of darwinKeyboard.c!
Fatal server error: Could not get kernel keymapping! Load keymapping from file instead.
Classe: fatal. Mudanças que a Apple fez no Mac OS X 10.1 quebraram o
código do XFree86 que lê o leiaute de teclado no núcleo do sistema
operacional; a mensagem acima é o resultado disso. Você precisa usar a
opção de mapeamento de teclado "Load from file" no Mac OS X 10.1. A
configuração é feita na caixa de diálogo Preferências (Preferences) do
XDarwin. Assegure-se de que um arquivo haja sido selecionado (isto é, use
o botão "Escolher arquivo", "Pick file") - simplesmente ativar a caixa de
verificação pode não ser suficiente em algumas versões do XDarwin. Caso
você não consiga abrir a caixa de diálogo Preferências porque o
XDarwin a fecha antes que você consiga usá-la, rode-o a partir do
Terminal através do comando startx -- -quartz -keymap
USA.keymapping
. Isto geralmente permite que o XDarwin inicie e
então você pode fazer a escolha permanente na caixa de diálogo
Preferências.
Fatal server error: Could not find keymapping file .
Class: Fatal (as it says). This error is due to the absence of the keymapping files under Panther. You need to install xfree86-4.3.99-16
or later, since these versions don't need the keymapping files.
Warning: no access to tty (Inappropriate ioctl for device). Thus no job control in this shell.
Classe: em geral, não causa danos. O XDarwin 1.0a2 e posteriores abrem
um shell interativo por debaixo dos panos para rodar seu arquivo de
inicialização do cliente (.xinitrc
). Isto foi feito
para que você não tenha que adicionar comandos para configuração de PATH
nesse arquivo. Alguns shells reclamam que não estão conectados a um
terminal real mas isto pode ser ignorado pois essa instância do shell não
é usada para qualquer coisa que requeira controle de jobs ou
similares.
Fatal server error: failed to connect as window server!
Classe: fatal. Isto significa que o servidor em modo console (para o
Darwin puro) foi iniciado enquanto você estava logado no Aqua.
Normalmente isto acontece quando você instala uma distribuição binária
oficial do XFree86 e esquece o tarball Xquartz.tgz. Isto também pode
acontecer quando os links simbólicos em
/usr/X11R6/bin
estão bagunçados ou quando você
executa o comando XDarwin
em uma janela de Terminal para
iniciar o servidor (você deveria usar startx
; veja Iniciando o XFree86.).
De qualquer forma, você pode executar ls -l
/usr/X11R6/bin/X*
e verificar a saída. Você deveria ver quatro
entradas relevantes: X
, um link simbólico apontando para
XDarwinStartup
; XDarwin
, um arquivo executável
(esse é o servidor em modo console); XDarwinQuartz
, um link
simbólico apontando para
/Applications/XDarwin.app/Contents/MacOS/XDarwin
; e
XDarwinStartup
, um arquivo executável pequeno. Se algum
desses estiver faltando ou apontando para arquivos diferentes, você
precisa corrigir. Como fazê-lo depende do método usado para instalar o
XFree86. Se você instalou o XFree86 com o Fink então você precisa
reinstalar o pacote xfree86
(ou
xfree86-rootless
para o OS 10.2 e anteriores). Se foi
instalado por você mesmo, então obtenha os arquivos a partir de uma cópia
de 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
Classe: em geral, não causa danos. Como a própria mensagem diz, não é um erro fatal. Até onde eu saiba, o XDarwin não chega a usar extensões XKB. Provavelmente algum programa cliente tentou usá-las...
startx: Command not found.
Classe: fatal. Isto pode acontecer com o XDarwin 1.0a2 e 1.0a3 quando
seus arquivos de inicialização do shell não foram configurados para
adicionar /usr/X11R6/bin
à variável PATH. Caso você
use o Fink e não haja mudado seu shell padrão, adicionar a linha
source /opt/sw/bin/init.csh
ao arquivo
.cshrc
em seu diretório home (conforme recomendado
pelas instruções do Fink) deve ser suficiente.
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed _XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error: Cannot establish any listening sockets - Make sure an X server isn't already running
Classe: fatal. Isto pode acontecer quando você executa acidentalmente
várias instâncias do XDarwin de uma vez, ou talvez após uma finalização
problemática (isto é, uma folha) do XDarwin. Pode ser também um problema
com permissão de arquivo com os sockets para conexões locais. Você pode
tentar limpá-los com rm -rf /tmp/.X11-unix
.. Reiniciar o
computador também ajuda na maior parte dos casos (o Mac OS X limpa
automaticamente o diretório /tmp
quando é iniciado,
e a pilha de rede é reiniciada).
Xlib: connection to ":0.0" refused by server Xlib: Client is not authorized to connect to Server
Classe: fatal. Os programas clientes não conseguem se conectar ao
servidor de exibição (XDarwin) porque usam dados de autenticação falsos.
Isto é causado por algumas instalações do VNC, por rodar o XDarwin
através do sudo, e provavelmente outros acidentes estranhos. A correção
usual é apagar o arquivo .Xauthority
(o qual
armazena dados de autenticação) no seu diretório home e recriá-lo em
branco:
cd rm .Xauthority touch .Xauthority
Outra causa comum de erro na inicialização do XFree86 é um arquivo
.xinitrc
incorreto. O que acontece é que
.xinitrc
é executado e por alguma razão termina
quase que de imediato. O xinit
interpreta isto como "a
sessão do usuário terminou" e encerra o XDarwin. Veja a seção sobre o .xinitrc
para mais detalhes. Lembre-se de configurar sua variável PATH e ter um
programa que execute indefinidamente e que não seja iniciado em segundo
plano. É uma boa idéia adicionar exec xterm
como uma
garantia caso seu gerenciador de janelas ou similar não possa ser
encontrado.
7.2 Ícones pretos no painel do GNOME ou no menu de um aplicativo GNOME
Um problema comum é ícones ou outras imagens sendo exibidos como retângulos pretos ou contornos pretos. Em última instância, isto é causado por limitações do núcleo do sistema operacional. O problema foi relatado para a Apple mas até agora eles aparentam não querer corrigi-lo: veja o relatório de erro para detalhes.
A situação atual é que a extensão MIT-SHM do protocolo X11 é
praticamente impossível de user usada no Darwin e no Mac OS X. Há duas
formas de desligar esta extensão de protocolo: no servidor ou nos
clientes. Os servidores XFree86 instalados pelo Fink (isto é, os pacotes
xfree86-server
e xfree86-rootless
) já a
desligaram. O GIMP e o painel do GNOME também já foram inoculados. Se
você encontrar ícones pretos em outra aplicação, inicie a aplicação com a
opção de linha de comando --no-xshm
.
7.3 O teclado não funciona no XFree86
Este é um problema conhecido que até agora aparenta afetar apenas os laptops (PowerBook, iBook). Para contorná-lo, a opção de mapeamento de teclado "Load from file" foi implementada. Hoje em dia tornou-se o padrão porque o método antigo (ler o mapeamento do núcleo do SO) parou de funcionar com o Mac OS X 10.1. Se você ainda não habilitou esta opção, você pode fazê-lo na caixa de diálogo de Preferências do XDarwin. Marque a caixa de verificação "Load from file" e escolha o arquivo de mapeamento de teclado a ser carregado. Após reiniciar o XDarwin, seu teclado deveria funcionar de forma geral (veja abaixo).
Caso esteja iniciando o XFree86 a partir da linha de comando, você pode passar o nome do arquivo de mapeamento de teclado a ser carregado como uma opção:
startx -- -quartz -keymap USA.keymapping
7.4 A tecla Backspace não funciona
Isto pode acontecer quando se usa a opção "Load from file" acima. Os
arquivos de mapeamento descrevem a tecla backspace como "Delete" e não
como "Backspace". Você pode corrigir isto coloando a seguinte linha no
seu arquivo .xinitrc
:
xmodmap -e "keycode 59 = BackSpace"
Se estou lembrando corretamente, o XDarwin 1.0a2 e posteriores já têm código que mapeia correta e automaticamente a tecla Backspace.
7.5 "Warning: locale not supported by C library"
Estas mensagens são relativamente comuns mas não causam dano. Elas significam exatamente o que dizem - internacionalização não é suportada através da biblioteca C padrão, o programa usará as mensagens padrão, formatos de data etc em inglês. Há várias formas de lidar com isto:
-
Ignore as mensagens.
-
Livre-se das mensagens removendo a definição da variável de ambiente LANG. Observe que isto também irá desligar a internacionalização de programas que de fato a suportem (via gettext/libintl). Exemplo para o .xinitrc:
unset LANG
Exemplo para o .cshrc:
unsetenv LANG
-
(apenas 10.1) Use o pacote
libxpg4
do Fink. Ele compila uma pequena biblioteca que contém funções de local que funcionam e faz com que ela seja carregada antes das bibliotecas de sistema (usando a variável de ambiente DYLD_INSERT_LIBRARIES). Você talvez tenha que definir a variável de ambiente LANG com um valor completamente qualificado, por exemplode_DE.ISO_8859-1
no lugar dede
orde_DE
. -
Solicite à Apple que inclua suporte apropriado para locais em uma versão futura do Mac OS X.
Próximo: 8. Dicas de uso