viernes, noviembre 09, 2012

Es actualizar Ubuntu y liarla

Visto aquí
Actualizo a Ubuntu 12.04 y ya la estamos liando. Que a mí no me importa hacer cosas y compilar y tal, todo lo que sea aprender y no ser un ignorante de la vida está bien, pero lo que no es normal es que cada actualización de Ubuntu (cada 6 meses) sea un dolor. Actualizar Ubuntu es más terrorífico que un Consejo de Ministros del actual Gobierno español: nunca sabes qué será lo siguiente que va a dejar de funcionar. Pero claro, si hay algún problema con algo, pues hay que actualizar a ver si se arregla solo. Muchas veces funciona, pero en otras ocasiones te la lía parda, como es el caso.

Resulta que un momento dado no me funcionaban los programas que empleo habitualmente y que usan Java. Me aparecía siempre el siguiente error:
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fdca9d34ce6, pid=8809, tid=140584390964992
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.6.0-b105 mixed mode)
# Problematic frame:
# C  [libc.so.6+0x34ce6]  catgets+0x16
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

El problema parece ser la versión 1.6 del JDK y su incompatibilidad con alguna mierda. Creo que tiene que ver también con algún tipo de conflicto de Compiz en Ubuntu. Puede borrarse Compiz, pero en principio no hace falta. Yo al menos no lo uso y ejecuto la sesión sin efectos de escritorio, porque siempre me ha dado errores de uno u otro tipo, especialmente con Maple. Además de Maple, el error me afectaba también a programas que uso habitualmente en el trabajo como Eclipse y Easy Java Simulations.

Primero instalamos la última versión de Java haciendo lo que se dice aquí. Parece que la versión la 1.6 ha dado multitud de problemas en Firefox y en una vulnerabilidad muy chunga, tron. Una vez instalado, comprobamos que la versión java-7-sun es la que tenemos instalada:

sudo update-alternatives --config java

Actualización: Si el instalador de Maple da problemas, probar a usar la opción -i console y luego hacer lo que siguiente cuando el programa ya esté instalado:

El problema con Maple es que usa un JRE propio, que está en su directorio de instalación. Para arreglar el problema funciona hacer esto que consiste en copiar el JRE nuevo, el que queremos usar, en el directorio de Maple como si fuese el suyo. Con Eclipse, no vale la versión actual que hay en repositorios de Ubuntu ya que no permite el uso del JDK 1.7. Hay que borrar la instalación por repositorios e instalarse la nueva directamente (es descargar y descomprimir nada más) y ya lo tenemos arreglado.

Para Easy Java Simulations basta con haber cambiado el java por defecto. En caso de que estuviésemos usando algún JRE metido a pelo en el programa, que es lo que me ha pasado a mí, no hay más remedio que borrarlo y dejar que el programa se reconfigure solo.

Actualización: ¡Matlab da el mismo problema! Para conseguir que se instale hay que introducir la ruta adecuada. Por ejemplo:

./install -javadir /usr/lib/jvm/jdk1.7.0/jre
 
Para saber cual es la dirección puede hacer locate rt.jar y elegir la que sea. Se instala... y eso es lo único que consigo. Cuando intento ejecutar el programa, no hay manera, vuelve a salir el mismo dichoso error. A diferencia de Maple, no es posible cambiar el JRE que viene por defecto en Matlab (aquí está más tuneado). Cambiando la variable MATLAB_JAVA tampoco funciona. Intentar instalar la versión de 32-bits en Linux de 64-bit tampoco parece posible. Me rindo.

*****

Extras:

Cómo arreglar el arranque si te lo cargas: Puede configurarse el grub con un programa llamado grub-customizer ya que han quitado mi adorado starupmanager (y mira que funcionaba bien). Sin embargo, el grub-customizer a mí no me funciona (supongo que tendrá que ver con no tener una instalación limpia) y haciendo el tonto me acabé cargando el grub, así que al arrancar el ordenador ya no iniciaba el sistema operativo. Para recuperar el grub y el arranque se puede usar un Live CD de Ubuntu (vale cualquiera) haciendo lo siguiente (también se puede intentar esto). Primero, introducimos el Live CD y reiniciamos. Probamos el sistema operativo e instalamos boot-repair en el SO del Live CD. Para eso:

sudo nano /etc/apt/sources.list

deb http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu lucid main 
deb-src http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu lucid main

Las keyrings y todo eso da igual. Luego:

sudo boot-repair

Y seguimos los pasos y nos lo arregla solo. Esto es muy útil también para cuando instalamos el Windows y se carga el arranque de Linux. 

Otras cosas: Para añadir apps al panel superior, que esto también lo han puesto más dificil. Conectarse al ordenador de forma remota usando el NX Client también da problemas, hacer algo de esto parece que mejora el asunto (tampoco mucho). Si se intentan hacer conexiones de escritorio remoto de la forma habitual aparece una pantalla en blanco. Parece que el error tiene que ver de alguna forma con los distintos tipos de sesiones de escritorio que hay en las nuevas versiones de Ubuntu. Los iconos para controlar la impresoras, también ha desaparecido, hay que hacer esto en una terminal:

sudo system-config-printer

Otro error que me ha pasado: de repente la pantalla de inicio entra en una especie de bucle cuando intentas acceder al escritorio. Parece que tiene que ver con algo de la resolución de la pantalla (?). En fin, para arreglarlo, hay que entrar en modo comandos haciendo Ctrl+Alt+F1 y luego renombramos un archivo de nuestro directorio personal con:

mv .Xauthority .XauthorityBACK

Reiniciamos. Al primer reinicio a lo mejor salen cosas raras. Reiniciar otra vez y ya podemos acceder al dichoso Ubuntu.

En resumen: si funciona, mejor no tocar nada. O instalarse Debian (o Linux-Mint) de una lechuguina vez.

Actualización: Para instalar los drivers privativos de la tarjeta gráfica (AMD, Catalyst) puede hacerse esto. Para usar un adaptador de Wifi D-Link por usb hay que tocar el archivo etc/modprobe.d/blacklist.conf, allí escribir blacklist ar9170usb y reiniciar.