Cómo descargar Firefox manualmente en GNU/Linux

Mozilla ha anunciado recientemente que las distribuciones binarias de Firefox para GNU/Linux se proporcionarán en formato .tar.xz a partir de ahora. Si te estás preguntando de qué forma puede afectar esto al paquete que bajas con tu gestor de paquetes, Snap o Flatpak, la respuesta es: nada. Esta noticia está pensada para la gente que descargue Mozilla Firefox en GNU/Linux como un tarball binario.

Es una de las características menos conocidas de Mozilla Firefox, y a la vez es una que lleva ahí desde siempre. Heck, las primeras veces que usé GNU/Linux hace ya más de 15 años, lo instalé así, porque todavía no había aprendido a usar apt-get en Ubuntu, y esto era lo que obtuve cuando busqué en Google «descargar firefox ubuntu».

Si te metes directamente en el sitio web de Firefox desde GNU/Linux y le das al botón «Descargar», verás un botón que dice «Descargar para Linux 64-bit» (además de otro para 32-bit, pero según cuántos años tenga tu ordenador tal vez ese no te haga falta.) Púlsalo y descargarás Mozilla Firefox como un tarball. La versión 133 es un archivo que termina por .tar.bz2, pero después del anuncio, es de esperar que futuras versiones se descarguen en formato .tar.xz.

Página de descarga de Mozilla Firefox.
Este enlace siempre ha estado ahí.

También, si necesitas una versión diferente, puedes descargarla a mano desde las siguientes ubicaciones:

Extráelo en una carpeta (yo soy fan de crear un directorio llamado ~/opt en mi carpeta personal, que recree el funcionamiento de la carpeta /opt pero sin requerir permisos de superusuario), y ya tienes Firefox en tu sistema.

Para ejecutarlo, puedes utilizar el programa firefox que hay dentro del directorio, que puedes abrir haciendo doble clic desde el explorador de archivos, aunque tal vez te interese montar un enlace simbólico en /usr/local/bin para poder abrirlo más cómodamente.

Pantalla de inicio de Firefox.
Recuerda extraer Firefox en una ubicación estable si vas a establecerlo como naveagdor por defecto para que tu sistema no tenga problemas en encontrarlo.

Ten en cuenta que este Firefox es completamente funcional y que si lo has extraído en una ubicación donde tengas permisos de escritura, se actualizará automáticamente igual que el Firefox que puedas instalar de otro modo.

Si quieres crear un lanzador mediante MenuLibre o mediante cualquier otra aplicación que te deje manipular archivos .desktop, puedes hacer que apunte a firefox como programa a ejecutar. Tienes un icono para usar en tu lanzador en el directorio browser/chrome/icons/default/default128.png allá donde hayas extraído Firefox.

Atajos de teclas para Terminator, el veterano emulador de terminal

Aunque hoy en día el ecosistema de terminales se esté renovando y haya terminales de nueva generación hecha en lenguajes más jóvenes y modernos, Terminator sigue siendo una de las terminales más sólidas y válidas para quien busque un emulador de terminal avanzado en el que hacer su trabajo sin interrupciones.

Puede que uses Terminator y sólo uses su faceta de «una ventana, una terminal». Sin embargo, realmente tiene mucho más que aportarte, y te lo voy a mostrar en esta entrada de blog.

Dividir la terminal

Si estás haciendo dos cosas a la vez, como puede ser escribir un archivo de configuración a la vez que miras otro archivo como referencia; o bien escribir en un archivo de configuración a la vez que miras la salida de otro comando, tal vez te interese usar los splits para dividir la terminal en regiones.

  • Con la combinación de teclas Ctrl + Mayus + E puedes dividir verticalmente el panel actual.
  • Con la combinación de teclas Ctrl + Mayus + O puedes dividir horizontalmente el panel actual.

Un panel es cada una de las terminales reales que ves en la ventana, y que identificas porque es ese cuadrado que tiene un área rojo para el título arriba por defecto (salvo que cambies los ajustes visuales del programa).

Ten en cuenta que puedes hacer varias divisiones si quieres, pero cada vez que pulses la combinación de teclas de dividir, lo que harás es dividir el panel actual, así que salvo que cambies el tamaño de los paneles, cada uno de los nuevos paneles será más pequeño.

Un split de Terminator con dos paneles.
Un split de Terminator con dos paneles.

Movimiento por los paneles

Cuando tengas múltiples paneles, vas a poder también moverte por ellos con estas combinaciones de teclas.

Para empezar, puedes usar Alt + ←↓→↑ (o sea, cualquier tecla de dirección) para cambiar el foco del teclado a otro panel. Cada tecla de dirección es la dirección a la que mover el foco. Por ejemplo, Alt + mueve el foco al panel que haya a la derecha del que tiene el foco ahora mismo.

Algunas personas tal vez encuentren que este atajo de teclas es incómodo debido a que tienen que llevar la mano demasiado lejos en el teclado para poder pulsarlo. En las opciones de Terminator pueden cambiar el atajo de teclas por otro de su elección. Tal vez prefieran usar HJKL para este fin. O 5678, homenaje a la ZX Spectrum.

Por lo menos, estaremos de acuerdo en que es mejor eso que levantar la mano del teclado, agarrar el ratón, mover el puntero hacia otro panel, y hacer clic en él.

Si sólo quieres rotar entre dos paneles, o rotar en orden, otras combinaciones que te pueden interesar son Ctrl + Mayus + N y Ctrl + Mayus + P. N y P son las iniciales de Next y Previous, así que estas combinaciones sirven para cambiar al panel siguiente y anterior.

Finalmente, si en algún momento necesitas concentrarte en un panel, puedes pulsar la combinación Ctrl + Mayus + X para hacer zoom y ponerlo a pantalla completa, escondiendo otros paneles. Al pulsarla de nuevo, volverá a su tamaño normal y volverás a ver el resto de paneles.

Usar grupos

Los grupos te permiten agrupar (como su nombre indica) varios paneles, para que al pulsar una tecla, se envíe a la vez a todas las terminales. Esto es algo que puede ser de utilidad en algunos casos, como que te conectes a varios sistemas remotos mediante SSH y quieras mandar un comando a todas las sesiones a la vez.

Aunque lo de los grupos es un mundo, porque lo puedes combinar de formas muy diversas, te voy a derivar por el momento hasta que haga una guía sobre ese tema a la ayuda de Terminator, donde te pueden explicar cómo crear grupos concretos y agregar paneles específicos para compartirlos ahí.

Sin embargo, si quieres mandar teclas a todas las terminales a la vez, puedes usar la combinación de teclas Super + G. Generalmente, Super va a ser la tecla Windows, así que: Windows + G. Al pulsar esa tecla, se activa este modo. Lo notarás porque los paneles que se acoplan al tuyo cambian la barra de título por una azul para señalar que están en modo de escucha.

Cuando pulses una tecla, cualquier terminal que esté con el título en azul también recibirá la tecla, así que podrías mandar comandos a varias terminales a la vez. Recuerda desactivar este modo cuando hayas terminado para no cometer errores graves. Para desactivar este modo, pulsa Super + Shift + G. De nuevo, Super suele ser la tecla Windows en un teclado tradicional, o la tecla Comando en un teclado Apple.

Ejecutar comandos en el arranque de GNU/Linux con systemd

Si tienes que ejecutar un comando cuando se enciende el ordenador, como iniciar manualmente un servicio o hacer un ajuste sobre un driver, puedes orquestarlo con systemd.

En este ejemplo vamos a ver cómo ejecutar un comando, como un script, cuando se enciende el ordenador. El objetivo es que durante el proceso de arranque, se invoque el comando; por ejemplo, que si el comando es un script que debe escribir algo en un archivo, lo haga. Para ello, nos estaremos apoyando en systemd, y crearemos una unidad personalizada que ejecute ese comando durante el arranque.

Esto contrasta con otras formas de ejecutar programas al encender el ordenador, como ponerlo en el autostart de nuestro entorno de escritorio o agregarlo al .bashrc, de que se hará durante el proceso de arranque, así que normalmente se ejecutará mientras el ordenador está iniciando, antes siquiera de que pongamos la contraseña.

Creamos un script de apoyo

En este ejemplo, fabricaré un script auxiliar que será el que defina lo que quiera que ocurra cuando se encienda el ordenador. Para este caso particular, haré que mi script escriba algo sobre uno de los archivos del directorio /sys, una operación típica para modificar el funcionamiento de alguno de los dispositivos de hardware del ordenador.

Crearé un script denominado update-led.sh con el código de mi script:

$ cat > update-led.sh <<EOF
> #!/bin/bash
> echo 1 > /sys/devices/platform/leds/leds/red:standby/brightness
> EOF
$

Como este script requiere ser ejecutado como root, lo pondré en una ubicación más propia del sistema, como /usr/local/sbin, y lo haré ejecutable:

sudo mv update-led.sh /usr/local/sbin/update-led.sh
sudo chmod +x /usr/local/sbin/update-led.sh

Si ahora queremos probar que el script funciona correctamente, lo podríamos ejecutar si es que es una opción en primer lugar.

Invocar el script al arrancar el sistema

Ahora definiré una unidad de systemd que todo lo que tiene que hacer es invocar este script que he fabricado. Para ello crearé un archivo en el directorio /etc/systemd/system, que es donde se colocan las unidades personalizadas de systemd. El archivo podrá tener el nombre que más nos interese, pero deberá terminar por .service. El nombre que le demos, quitando el .service, será como luego será ejecutado mediante systemctl start y similares.

Este archivo tendrá que contener lo que describo más abajo, cambiando las siguientes líneas de interés:

  • Description será cambiado por un comentario sobre qué hace el comando, para identificarlo semanas después, por ejemplo, «arreglo para el driver de red» o «ejecuta rm -rf a .cache».
  • ExecStart será cambiado por la ruta completa al script que hayas creado en tu caso.
[Unit]
Description=Activar el LED

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/update-led.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Este servicio está declarado como oneshot. systemd es bueno ejecutando programas que tienen que estar en marcha todo el tiempo mientras el ordenador está encendido, como el sistema de audio, un agente SSH o GPG… Sin embargo, en este caso le pediremos que ejecute el comando una vez y ya está. La instrucción RemainAfterExit también se usa para señalizar que si el comando termina, todo estará correcto.

Finalmente le pediremos a systemd que active esa unidad, ejecutándola a partir del próximo reinicio. Supongamos que el archivo de unidad se denomina update-led.service, pues el nombre a activar será update-led:

sudo systemd enable update-led

Y opcionalmente si queremos probarlo ya, podemos pedirle que ejecute el script inmediatamente con:

sudo systemd start update-led

¿Qué es un archivo ISO y por qué se usan para descargar GNU/Linux?

La gente más joven no recordará esto, pero hubo una época en la que los ordenadores traían un lector de discos ópticos. Aunque ya no estén de moda, siguen siendo representados cada vez que usamos un archivo .iso.

El disco compacto es un formato que empezó a investigarse a finales de los 70 y que derivó en la creación del CD de audio digital en 1982 o del CD-ROM en 1984. Con el CD de audio digital se hacía posible cuantizar la música como ceros y unos para que tuviese una mejor fidelidad. Y con la creación del CD-ROM se pudo guardar cualquier tipo de datos binarios. Sin embargo, el formato siguió desarrollándose durante las siguientes décadas, y para 1995, IBM y Phoenix presentaron la extensión «El Torito» (no es broma, ese es su nombre), que permitía colocar el código máquina de un programa en un CD-ROM que se podía ejecutar al encender el ordenador. Había nacido el Boot CD.

Por supuesto, uno de los primeros beneficiarios del Boot CD fue Microsoft Windows. Ya no era necesario que el ordenador tuviese MS-DOS para ejecutar el .EXE con el instalador de Windows, porque el propio CD-ROM traía el programa de arranque que permitía leer el resto del disco e iniciar el proceso de instalación. Sin embargo, los cargadores de arranque libres tardaron poco en adquirir también la posibilidad de hacer esto mismo. GRUB puede instalarse sobre un CD, haciendo que cuando se encienda el ordenador, se ejecute GRUB, que además sabe como leer el resto del disco para así cargar una copia del kernel, un disco RAM para arrancar el entorno vivo, o el programa de instalación.

Al principio, Slackware o Red Hat prensaban sus propios CD-ROM. Es decir, adquirías físicamente un CD-ROM de Red Hat o de Slackware en su propia caja y lo instalabas igual que se hacía con Microsoft Windows. Sin embargo, para facilitar el acceso y no tener que depender de poder adquirir una copia física de GNU/Linux, en cuanto las velocidades de internet y los tamaños de los discos duros lo permitieron, empezaron a poner esos mismos CDs en sus páginas web y FTP usando los archivos .iso.

¿Qué es un archivo .iso?

Un archivo .iso es una copia digital exacta de los sectores que forman parte de un CD de datos, como un CD-R o un CD-ROM. Dicho de otro modo, si un lector de CD lee cada una de las pistas de datos que hay en uno de estos discos, y copia los ceros y los unos en un archivo, crea una copia digital del CD. Luego un quemador de CD puede hacer el proceso inverso, llevando los ceros y los unos contenidos en ese archivo sobre la superficie de un CD-R. El resultado es que si descargamos de internet un archivo .iso, tenemos en nuestro ordenador el molde digital que nos permite fabricar copias de un disco compacto de datos.

¿Por qué se les llama .iso? Una vez se inventó el formato CD-ROM en 1983, permitiendo guardar unos y ceros aleatorios, fue necesario crear el formato de archivos que debía llevar el CD-ROM. Después de todo, por entonces la informática ya estaba empezando a llegar a más gente y ya existía la noción de archivo. Los datos binarios hay que agruparlos en archivos, igual que ocurre con un diskette o con un disco duro. Dado que un CD-ROM tiene unas características únicas que no tiene ningún otro medio de almacenamiento de la época, se inventó un sistema de archivos nuevo específico para los CD-ROM. Este formato fue finalizado en 1988 y se le llamó ISO 9660.

Así que de ahí el nombre. Si tomamos un CD quemado con el formato ISO y creamos una copia digital, será interesante ponerle como extensión al archivo .iso para identificar que se trata de una copia digital de ese CD, igual que existen otras tantas extensiones para identificar un tipo de archivo.

¿Por qué se sigue usando el .iso?

En primer lugar, por retrocompatibilidad. Muchos ordenadores viejos siguen teniendo lector de CD o de DVD, y para instalar una distribución GNU/Linux en ellos, el paso de quemar un CD o un DVD con el contenido de un archivo .iso sigue siendo lo más simple. Al quemar un archivo .iso, copiamos los bytes que definen el disco, haciendo que se pueda usar exactamente igual que se lleva haciendo toda la vida.

En segundo lugar, porque puedes acabar con el CD, pero no puedes acabar con «el CD». Hoy en día, lo normal es transferir el contenido de un archivo .iso a un disco USB, como un pendrive. Tiene ventajas: un pen no se raya y no deja de funcionar a los pocos usos, y es más ecológico porque se puede borrar y volver a grabar otra ISO sobre él (aparte de cualquier otra cosa). Lo bueno es que los archivos .iso que encontramos en internet hoy en día son híbridos. El programa de arranque está colocado de tal modo que si se copia a un CD, funciona, pero que si se copia a un pendrive, también lo hace de una manera que permite al ordenador encontrarlo y lanzarlo.

En tercer lugar, por integridad. Podríamos vivir en un mundo en el que las distribuciones GNU/Linux se distribuyesen como un .zip que luego es copiado sobre un pendrive. Sin embargo, cabe la posibilidad de que se haga mal y que por lo tanto se creen copias corruptas. Al compactar toda la imagen de disco en un archivo opaco que no se puede modificar se evitan errores que pueden provocar que el proceso de creación de un medio de arranque GNU/Linux sea más complicado de llevar a cabo.