# rm-rf.es

X11Forwarding en instalaciones de Oracle (DISPLAY not set)

Cuando realizamos instalaciones de Oracle Database es necesario disponer de entorno gráfico para el instalador. Normalmente no se instala en máquinas con entorno gráfico así que tenemos que disponer de conexión VNC o hacer redirección de X vía SSH para poder disponer de entorno gráfico en el instalador.

Si no tenemos la redirección de X bien configurada, al iniciar el instalador recibiremos este error:

[oracle@oracle-linux database]$ ./runInstaller 
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 3652 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 2315 MB    Passed
Checking monitor: must be configured to display at least 256 colors
    >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.    Failed <<<< Some requirement checks failed. You must fulfill these requirements before continuing with the installation, Continue? (y/n) [n] y >>> Ignoring required pre-requisite failures. Continuing...
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2012-09-08_09-35-16AM. Please wait ...
DISPLAY not set. Please set the DISPLAY and try again.
Depending on the Unix Shell, you can use one of the following commands as examples to set the DISPLAY environment variable:
- For csh:  			% setenv DISPLAY 192.168.1.128:0.0
- For sh, ksh and bash: 	$ DISPLAY=192.168.1.128:0.0; export DISPLAY
Use the following command to see what shell is being used:
	echo $SHELL
Use the following command to view the current DISPLAY environment variable setting:
	echo $DISPLAY
- Make sure that client users are authorized to connect to the X Server.
To enable client users to access the X Server, open an xterm, dtterm or xconsole as the user that started the session and type the following command:
% xhost +
To test that the DISPLAY environment variable is set correctly, run a X11 based program that comes with the native operating system such as 'xclock':
	% 
If you are not able to run xclock successfully, please refer to your PC-X Server or OS vendor for further assistance.
Typical path for xclock: /usr/X11R6/bin/xclock

La descripción ya nos da varias pistas, pero vamos a ver los pasos necesarios para hacer funcionar las X a través de un tunel SSH con nuestra máquina local. Suponemos que la máquina local (GNU/Linux) dispone de entorno gráfico instalado. La máquina Oracle utilizará el usuario «oracle» para la instalación.

Lo primero es instalar los paquetes necesarios de xauth en la máquina de Oracle:

# yum install xorg-x11-xauth.x86_64 xorg-x11-server-utils.x86_6
Setting up Install Process
Resolving Dependencies
...
...
=====================================================================================================================
 Package                       Arch                  Version                         Repository                 Size
=====================================================================================================================
Installing:
 xorg-x11-xauth                x86_64                1:1.0.2-7.1.el6                 ol6_latest                 34 k
Installing for dependencies:
 libICE                        x86_64                1.0.6-1.el6                     ol6_latest                 52 k
 libSM                         x86_64                1.1.0-7.1.el6                   ol6_latest                 26 k
 libX11                        x86_64                1.3-2.el6                       ol6_latest                582 k
 libX11-common                 noarch                1.3-2.el6                       ol6_latest                188 k
 libXau                        x86_64                1.0.5-1.el6                     ol6_latest                 21 k
 libXext                       x86_64                1.1-3.el6                       ol6_latest                 33 k
 libXmu                        x86_64                1.0.5-1.el6                     ol6_latest                 58 k
 libXt                         x86_64                1.0.7-1.el6                     ol6_latest                174 k
 libxcb                        x86_64                1.5-1.el6                       ol6_latest                 99 k

Transaction Summary
=====================================================================================================================
Install      10 Package(s)
...
...

Mientras tanto, en nuestro host local, que es el que tiene entorno gráfico debemos permitir el acceso a las X a la máquina remota. Por defecto no se permite más que al usuario local:

$ xhost
access control enabled, only authorized clients can connect
SI:localuser:alexgarcia

Podéis permitirlo para todos temporalmente o para un único host:

$ xhost +
access control disabled, clients can connect from any host

Para un único host:

$ xhost +

Seguimos en la máquina local y ejecutamos:

$ xauth list
alex-lt/unix:0  MIT-MAGIC-COOKIE-1  f796d0a9a879facffdd3acffcfc1c160

Ya hemos terminado en la máquina con entorno gráfico, ahora accedemos a la máquina Oracle, esta vez activando la redirección de X (podemos añadir el debug -vv para ver que todo va bien).

$ ssh -X oracle@192.168.1.129 -vv

Una vez dentro debemos añadir a la lista de xauth la máquina a la que vamos a hacer redirección de X, es la cadena de texto de antes:

$ xauth add alex-lt/unix:0  MIT-MAGIC-COOKIE-1  f796d0a9a879facffdd3acffcfc1c16

A partir de aquí si todo ha ido bien deberíamos poder ejecutar aplicaciones con entorno gráfico, por ejemplo xclock:

$ xclock

Si os da algún problema después del xauth en la máquina Oracle, probad a salir de la sesión ssh y volver a entrar:

$ ssh -X oracle@192.168.1.129 -vv

Aseguraos también de que la máquina local con X permite el X11Forwarding:

~$ grep X11 /etc/ssh/sshd_config 
X11Forwarding yes
Salir de la versión móvil