Delirios de un Informático

Cómo usar múltiples versiones de Firefox en Linux

Como programador web necesito probar mis desarrollos en múltiples navegadores en sus diferentes versiones sobre todo para dar soporte a versiones viejas que aún usa un porcentaje significativo de usuarios, aunque tambien para anticiparme a los cambios que traerán las nuevas versiones, utilizando los nighty builds o las betas.

En el caso de Firefox resulta bastante sencillo, ya que permite gestionar fácilmente perfiles separados y las rutas que utiliza son relativas por lo que no importa el directorio desde donde se ejecute. Basta ubicar las versiones en subdirectorios nombrándolas, por ejemplo, con los 2 primeros números: 4.0, 3.6, 3.5 o 3.0. Luego, con este script puede lanzarse una versión concreta ejecutando firefox -P 4.0, lo que sirve para tener también un perfil para cada versión:

#!/bin/bash

# base variables
export FIREFOX_HOME="/path/to/firefox"

# detects version to launch
if [ "x$1" == "x-P" ]; then
    export FIREFOX_VERSION="$2"
fi

# if version is not defined, uses last
if [ "x$FIREFOX_VERSION" == "x" ]; then
    export FIREFOX_VERSION="4.0"
fi

# check if version exists
if [ -f "$FIREFOX_HOME/$FIREFOX_VERSION/firefox" ]; then

    # tell user what version will be opened
    echo "Opening Mozilla Firefox $FIREFOX_VERSION..."

    # launch Firefox
    case "$FIREFOX_VERSION" in
      4.0)
        export GTK_PATH="/usr/lib/gtk-2.0"
        export MOZ_PLUGIN_PATH="/usr/lib/mozilla/plugins"

        exec "$FIREFOX_HOME/$FIREFOX_VERSION/firefox" -P $FIREFOX_VERSION "$@"
        ;;

      3.6|3.5|3.0)
        export GTK_PATH="/usr/lib32/gtk-2.0"
        export MOZ_PLUGIN_PATH="/usr/lib32/mozilla/plugins"

        exec "$FIREFOX_HOME/$FIREFOX_VERSION/firefox" -P $FIREFOX_VERSION "$@"
        ;;
    esac
# version doesn't exists
else
    echo "Mozilla Firefox $FIREFOX_VERSION not found"
fi

Como se puede ver, al utilizar un sistema de 64 bits es necesario realizar unos pequeños ajustes, ya que hasta la versión 4.0 (aún en beta) sólo había compilaciones oficiales para 32 bits. Si el sistema es de 32 bits pueden eliminarse sin problema los export previos al exec. Para terminar, el script puede ubicarse en /usr/bin/firefox para que el sistema lo tome como el ejecutable por defecto y pueda seguir siendo el navegador por defecto.