"Después del juego es antes del juego"
Sepp Herberger

lunes, 26 de enero de 2015

GDM3 en Debian Wheezy y el bug de la tecla ESC.

En el paquete gdm3 que viene por defecto con Debian Wheezy nos hemos encontrado un con un problema bastante embarazoso. En mi caso tenemos el gdm configurado con la sesión gnome-fallback y la lista de usuarios desactivada (ya que al tener un servidor ldap la lista de usuarios mostrados sería inmensa) con esta configuración en  greeter.gsettings:
[org.gnome.desktop.session]
session-name='gdm-fallback'
#session-name='gdm-shell'
Pues bien, en esta configuración el usuario primero mete su login y después su password, pero si:
  • El usuario pulsa ESC al pedirle el login, o
  • El usuario pulsa el botón de "Cancelar" al pedirle el password
nuestro gdm se queda en una ventana sin cajas de texto ni botones que impide seguir adelante:


La única solución pasa por reiniciar el servicio gdm3 o el PC, cosas bastante incómodas para el usuario de a pie.

El origen del problema es que gdm3 intenta mostrar la lista de usuarios al pulsar ESC, pero al estar ésta desactivada se queda en un callejón sin salida. Es un bug que está presente en gdm3 desde las versiones 3.4.1-2 a la 3.4.1-8, que son las que hay para Wheezy. A partir de ahí se corrige pero ya habría que utilizar paquetes de Debian Jessie.

Una solución parcial es hacer un downgrade hacia  paquetes de Squeeze, que entrarán con calzador y que luego hay que congelar para que no se actualicen en el momento menos oportuno
Bueno, buscando por internet vemos que el bug ya está registrado y que incluso han mandado el parche con la solución para aplicar a la versión 3.4.1-8  y resolver el problema, pero no acaban de aplicarlo. Vamos a ver como aplicarlo nosotros y crear un nuevo paquete actualizado. Necesitaremos:
Vamos allá con los comandos:
Editamos /etc/apt/sources.list.d y nos aseguramos de que dentro tenga los repositorios de sources de Wheezy:
.....
deb-src http://http.debian.net/debian wheezy main
.....
Actualizamos la lista de paquetes desde repositorios, instalamos el paquete dpkg-dev y bajamos el código fuente de gdm3:
apt-get update
cd
apt-get install dpkg-dev
apt-get source gdm3
Entramos dentro del directorio y creamos el fichero con el parche en la ruta correspondiente:
cd gdm3-3.4.1/
cd debian/patches/
nano 94_simple_greeter_conversation.patch 
Dentro del fichero metemos el código descargado de aquí. A continuación editamos el fichero "series"
nano series 
y añadimos al final "94_simple_greeter_conversation.patch", para que se incluya el parche. Ahora instalamos un paquete con utilidades que necesitaremos:
apt-get install devscripts
Y añadimos al fichero "changelog" los cambios a realizar:
cd /root/gdm3-3.4.1/
dch -i
Este comando anterior abre el fichero changelog del paquete, que quedará así:
gdm3 (3.4.1-8.1) UNRELEASED; urgency=low

   * Non-maintainer upload.
   * Solucionamos el bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751140

  -- root <root@ltsp-wheezy>  Fri, 23 Jan 2015 21:01:56 +0100
Le decimos que se bajen todas las dependencias de gdm3 para recompilar el paquete:
apt-get build-dep gdm3
En mi caso, aquí me daba un error en los paquetes libnss3 y libnss3-1d, ya que tengo instaladas unas versiones de backports de wheezy, en lugar de las versiones oficiales de la versión. Para solucionarlo me bajo las versiones correctas y las instalo a mano:
cd
wget http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-1d_3.14.5-1+deb7u3_amd64.deb
wget http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.14.5-1+deb7u3_amd64.deb
dpkg -i libnss3*
Ojo, que me bajo las versiones amd64 ya que este es mi entorno de trabajo, si estás en i386 bájate los paquetes correctos. Si hacemos ahora:
apt-get build-dep gdm3
veremos que funciona. Ya solo falta recompilar todo, parche incluido:
debuild -uc -us
Tras un ratito, ya tenemos el paquete en el directorio /root. Solo falta instalarlo:
cd 
dpkg -i gdm3_3.4.1-8.1_amd64.deb 
nótese que el paquete nuevo es gdm3_3.4.1-8.1, superior al gdm3_3.4.1-8 oficial de Wheezy. Esto garantiza que no se sobreescriba con la versión de los repositorios actuales al actualizar con apt-get upgrade o pkgsync. Veamos una última comprobación:
# dpkg -l | grep gdm
ii  gdm3                                      3.4.1-8.1                          amd64        Next generation GNOME Display Manager
Pues ya está instalado, falta hacer:
apt-get updateapt-get upgrade
Para que libnss3 y libnss3-1d vuelvan a la versión correcta de backports.
Problema resuelto, ¡gracias al creador del parche, Baptiste Pellegrin!
Vía rápida: si no quieres recompilar, aquí tienes ya parcheados los paquetes para amd64 e i386

No hay comentarios:

Publicar un comentario