martes, 18 de diciembre de 2012

La misteriosa desaparición del entorno Unity en Ubuntu 12.10


Actualización: según me comenta Marcelo Sánchez en este tuit, parece que el truco expuesto en el vídeo también funciona con tarjetas ATI. Celebro que me lo haya comentado, dado que no tengo posibilidad de comprobar este tipo de cosas con otra tarjeta que no sea la mía. ¡Muchas gracias Marcelo!

Me temo que si algún día el señor Shuttleworth, en un día de ocioso surfeo internáutico, da por una azarosa coincidencia con esta página (y se toma la molestia de que alguien se la traduzca), va a terminar aseteando un muñeco con mi efigie, hasta que me salga un sarpullido y me entren repentinos achaques de lumbago. Si ayer le metía un poco de caña al tema de los apagados incontrolables de la pantalla en la última versión de Ubuntu, hoy voy a dar por zanjada (eso espero) otra cuestión que es, de lejos, más grave y más chapucera. 
Esta vez me he prometido a mi mismo no extenderme, así que me limitaré a describir el problema y dejar el código conveniente para su solución. Así me dedico a lo que me apetece en este momento: a rajar. 


El problema

Tan sencillo como lo que digo en el vídeo: en la búsqueda de un mejor rendimiento, según lo que  se lee por estos mundos blogueros, uno que es incauto se atreve a instalar los driver privativos de su tarjeta gráfica, en este caso de una Nvidia (modelo 550 Ti, aunque parece que es algo bastante generalizado). Aquí tengo que añadir una crítica colateral al tema de este artículo: me parece un poco extraño el planteamiento de Ubuntu a la hora de ofrecerte "la manzana del pecado", me explico: Según la nueva interfaz para estos menesteres en Ubuntu 12.10 (aunque esta crítica viene de lejos, la cosa no ha cambiado demasiado), para instalar el dichoso driver privativo tienes que meterte en la aplicación "orígenes del software". En esa aplicación se encuentra, bajo el epígrafe "controladores adicionales" una serie de drivers que podemos seleccionar para aumentar (en principio) el rendimiento en términos de aceleración gráfica de nuestro sistema. Y mi crítica viene del hecho de que la información es nula. O confusa al menos. Entiendo que  los driver privativos son eso, privativos, y por lo tanto prácticamente secretos, y no es posible acceder a sus especificaciones. Pero si la filosofía de Ubuntu es proporcionar un sistema Linux accesible, o user-friendly, como dicen los ingleses, se echa de menos un poco más de información. Al menos que te digan la diferencia entre nvidia-current y nvidia-current-updates. O si la intuición del "burro grande, ande o no ande" es acertada si me decanto por la última versión disponible (310 por defecto) o debo, en aras de la estabilidad, dejarme llevar por la prudencia de la versión "antigua" (304). Servidor, que lleva ya un tiempo con este sistema termina probándolas todas el día de la instalación, haciendo cuatro pruebas y si todo va bien, se suele decantar por la más moderna. Pero generalmente esto se hace a ojo.

Eh, Shuttleworth, ¿cuántas carreras necesito para entender esto?

Aunque, naturalmente, estar en Linux suele significar que el usuario es suficientemente autónomo como para buscarse la vida y encontrar fuentes de información, que las hay. Pero no todo el mundo sabe inglés, no todo el mundo tiene tiempo para emplearlo en búsquedas de información, no todo el mundo tiene porqué saber qué demonios significa el término "benchmark". Otro día lo explico, que esta vez no viene al caso. Pero, señores de Canonical: Steam se acerca, va a haber jugones refugiados a montones, y se van a llevar un sorpresón cuando contemplen lo confuso que resulta instalar un driver para su tarjeta gráfica. Y esto no es lo peor. Como os dije el verdadero problema se da en Ubuntu 12.10, cuando reseteamos después de haber instalado el controlador, que a ojo de buen cubero hemos seleccionado. Y aparece el desastre. Una hermosa panorámica de nuestro fondo de escritorio, pero desprovista de la barra de lanzadores, de la de indicadores, de nada que recuerde a Unity. Unity ha desaparecido. Y uno termina con la desazón propia de quien ha cometido un crimen accidentalmente. Si al menos hubiese deseado cargarme a Unity... Pero no es así, ¡yo no pretendía hacerle daño! 
Este problema me angustió la primera vez. Las siguientes ya me ha ido cabreando. Detecté este bug los primeros días, tal vez a las 48 horas de la salida oficial de Ubuntu 12.10. Lo solucioné rápido tras una búsqueda en Google. Y no le volví a hacer caso hasta que hace unos días me encontré con algunos problemas en el renderizado de las fuentes del sistema, que se veían borrosas. Llevado por la intuición (así soluciono yo las cosas, a porrazos), declaré culpable a los drivers gráficos, que decidí reinstalar. Y ahí estaba de nuevo la pantalla desértica, vacía de tranquilizadores barras laterales, dashes, huds, y demás nomenclaturas cool. Y eso sí que no puede ser. La última versión de Ubuntu es del mes 10 del año 12. Y estamos en el mes 12 del año 12. Habéis tenido dos meses para solucionar un problema que sí es de los gordos. 

La solución

Básicamente por eso me he decidido a publicar este vídeo. Porque ya no estoy seguro de si determinados errores van a permanecer indefinidamente en determinadas versiones o si, incluso, van a terminar cosificándose y heredándose de una versión .04 a una .10 y luego a la siguiente .04 y así sucesivamente in saecula saeculorum.
De modo que ahí tenéis los comandos, igualitos a los del vídeo; abrimos el terminal (Ctrl + Alt+ T) y escribimos:
sudo apt-get install linux-source
sudo apt-get install linux-headers-generic
Estos dos comandos sirven para instalar cosas muy misteriosas y que no entiendo, relacionadas con funciones básicas de compilación o algo así. Al parecer deberían venir incluidas en cualquier distro seria, pero Ubuntu 12.10 no las trae... o eso he entendido, que aquí me estoy metiendo en terrenos que desconozco completamente; que por otra parte me fascinan, pero que desconozco. Aunque aquí por ejemplo está bien explicado.  El paso siguiente es desinstalar los paquetes de los drivers que, ¡ah incautos! habíamos instalado antes del reseteo pensando que no iba a pasar nada por hacerlo; dependiendo de los que hayáis instalado (si os acordáis, y si no id probando), usad uno de estos comandos:
sudo apt-get remove nvidia-current
sudo apt-get remove nvidia-current-updates 
sudo apt-get remove nvidia-experimental-304
sudo apt-get remove nvidia-experimental-310
Y con todo este tinglado, que llevará un ratito, ¿adivináis qué toca? ¡Enhorabuena, volver a instalar los putos dichosos drivers!  
sudo apt-get install nvidia-current
sudo apt-get install nvidia-current-updates 
sudo apt-get install nvidia-experimental-304
sudo apt-get install nvidia-experimental-310

Conclusiones

Aquí hay una moraleja curiosa: por un lado, los de Canonical son unos auténticos chapuzas. Les puedo conceder un mes tras cada nuevo lanzamiento, o mes y medio para reparar errores graves. Puedo incluso perdonarles tonterías como la que comentaba el otro día. Pero esto ya es pasarse. Sobre todo (insisto) cuando el enfoque de esta distribución de Linux está orientado específicamente a novatos asustadizos, a aprendices con más valor que conocimiento, con personas que vienen llamadas por la idea de que Linux mola, o que Linux es justo. Y se llevan este laberinto a cambio, la primera en la frente, vamos a hacer que un novato en su primera instalación tenga que recompilar el kernel de no se qué. Lo dicho, unos genios los de Canonical. 
Y por otro lado, aunque parezca contradictorio, lo increíblemente genial que es Linux. Si yo, que soy un inútil, un auténtico manazas, soy capaz de arreglar estas cosas, es que Linux es verdaderamente robusto. Tan abierto que me permite solucionar esta clase de problemas con relativamente poco esfuerzo (un rato buscando por la red, y otro rato procurando que corto y pego en el terminal siguiendo el orden correcto). Si alguien un día critica a Linux por esta clase de cosas, lo divertido es que podemos apoyarnos en estas cosas para devolverle la crítica. ¿Os imagináis que por algún tipo de bug ocurriera lo mismo o algo parecido en Windows? En Linux, todo lo que se rompe tiene arreglo. O casi. Lo que viene roto en Windows te lo comes con patatas, y no hay devoluciones. 
Por cierto, para rematar: hace unos meses me entró una vena jugona y me dio por comprarme el Napoleón total War, para echar unas horillas conquistando Europa. Y no tenía partición de Windows. Unas horas después tenía 200 gigas ocupados con un XP que encontré "por ahí" pero no había manera de hacer que la pantalla fuese a la resolución nativa, ni de hacer que funcionase nada que tuviese aceleración gráfica, ni siquiera tenía conexión a internet. Unas horas después me acordé de que tenía que instalar los driver de la placa base y de la tarjeta gráfica, que estaban dentro de las cajas de los respectivos componentes, que por casualidad conservaba. Os imaginaréis la cara de tonto que se me puso. Y es que Ubuntu/Linux, por muchos errores que tenga, por muchas cosas que tenga que solucionar por mis propios medios, me tiene muy mal acostumbrado.

Nota: Como ya es conocida mi opinión de aquellos que no citan, la solución la saqué de aquí. Echadle un ojo a los comentarios en ese hilo que os dejo, vienen un par de soluciones alternativas en función de diferentes circunstancias.   
Actualización: Corregidos los comandos de instalación gracias al comentario de más abajo, muchas gracias a Rafa por el aviso!