Solucionar crashes inesperados de Firefox 3.5
He tenido bastantes problemas con Firefox 3.5 en mi Arch. En Gentoo, me funciona perféctamente y nunca he tenido ni un sólo problema con su desempeño, funciona perféctamente; en Arch es complétamente diferente, haciendo cosas normales como revisar el correo electrónico o ver un video en Youtube se cierra sin ningún motivo aparente y sólo en algunas de las ocasiones recupera las pestañas que tenía abiertas.
Intenté compilando Firefox y no hacer uso del pkg.tar.gz que encuentras en los repositorios extra, pero sin ningún resultado.. seguían los mismos fallos. Recordé que Firefox hace uso de Xulrunner (entorno de ejecución) así que me dispuse a recompilarlo y he ahí la solución 🙂
Voy a mostrar como realizar el proceso en la distribución Arch Linux haciendo uso de ABS. Lo más probable es que en tu distribución funcione corréctamente ó sino, te toca compilar a mano.
1. Instalar ABS. ABS es el Sistema de Construcción de Arch (Arch Building System) el cual permite construir y empaquetar paquetes partiendo de su código fuente (al estilo de los ports *BSD). Haciendo uso de pacman podemos instalar el paquete que hemos generado.
pacman -S abs
2. Editemos los flags de compilación para ajustarlo a nuestra arquitectura. No pienso profundizar en esto, ya que es un largo tema (man gcc), digamos a modo resumido que haciendo eso podemos optimizar los binarios que generamos y obtener un mejor desempeño (no siempre es así). Es muy importante tener bien las CFLAGS, sino puede que los programas no tenga el funcionamiento esperado, como nos explica Javi. Aquí encuentras CFLAGS para tu arquitectura que está comprobado su buen funcionamiento.
nano /etc/makepkg.conf
3. Actualizamos el árbol ABS. Como root:
abs
4. Creemos un directorio en nuestro home en el cual realizaremos las labores de compilación:
mkdir ~/abs
5. Copiemos los ABS a nuestro directorio:
cp -r /var/abs/extra/firefox ~/abs
cp -r /var/abs/extra/xulrunner ~/abs
6. Ahora compilemos xulrunner:
cd ~/abs/xulrunner
makepkg
Nota: Eso se te llevará un buen rato, dependiendo de los parametros de compilación que hayas definido anteriormente y del hardware de tu equipo. En mi caso se ha tomado 20 minutos, pero lo he compilado también en otros equipos y se ha tomado hasta 45 minutos.
6. Si todo ha salido bien ya deberíamos de tener un archivo con nombre xulrunner-xxxx-arch-.pkg.tar.gz. Ese es el precompilado que hemos generado que instalaremos posteriormente con pacman. Ahora compilemos Firefox (este si se lleva muy poco tiempo). Para evitar tener que descargar de nuevo el código fuente (unos 45 MB) simplemente lo copiamos al directorio de Firefox:
cp ~/abs/xulrunner/firefox*.tar.bz2 ~/abs/firefox/
cd ~/abs/firefox
makepkg
7. Una vez hayamos terminado de compilar, procedemos a instalar. Primero eliminemos las versiones que hemos instalado desde los repositorios:
pacman -Rd firefox xulrunner
Es muy importante que los desinstales usando el flag -d, sino te pondrá problema por dependencias huérfanas. Ahora sí, instalemos:
pacman -U ~/abs/xulrunner/xulrunner*.pkg.tar.gz
pacman -U ~/abs/firefox/firefox*.pkg.tar.gz
Y listo 😀 Tu Firefox debería de estar funcionando perfectamente (almenos así fué en mi caso).
Las ventajas de trabajar con el código fuente. ¿Les quedó gustando? Pregunten por Gentoo entonces 😉