Diccionario UNIX: Tarball

Puede que alguna vez hayas escuchado el término tarball. En esta entrada de blog te quiero contar qué es un tarball. Más concretamente, qué tipos de tarball hay.

Un tarball es simplemente el apodo que recibe un archivo TAR. El origen de la palabra tarball simplemente viene de un juego de palabras, debido a que en inglés, «tar» también quiere decir «alquitrán». Al final del día, no es más que una forma cariñosa de referirse a uno de estos archivos. Pero, ¿qué es realmente un archivo TAR?

TAR es un archivador. Es un formato diseñado para tomar varios archivos y juntarlos en uno único. Por ejemplo, puedes tomar todos los logs de la carpeta /var/log, que estarán dispersos con múltiples nombres, y fabricar un único archivo tar (un tarball) con el que será más fácil de archivar o compartir los datos.

Esquema de cómo funciona (más o menos) un archivo TAR.

El origen de TAR viene de Tape Archiver, y es que TAR es un formato y un programa que lleva con nosotros muchos años. Precisamente el objetivo inicial de TAR era juntar varios archivos en un mismo flujo de bytes para poder pasarlo de forma más fácil a una cinta magnética, en los viejos días donde se usaban cintas magnéticas para guardar la información. Eventualmente, TAR adquirió soporte para guardar en su lugar el flujo de datos en un archivo del disco duro y, hoy en día, sería rara la idea de guardar sobre cinta (a pesar de que hay gente que lo sigue haciendo).

Uno de los puntos clave sobre TAR es que, a diferencia de otros formatos como el ZIP o como el 7Z, TAR no comprime los archivos. Solamente los junta y les pone una serie de metadatos al principio del archivador para que luego se puedan extraer, es decir, separar y volver a dejar como múltiples archivos separados.

Para comprimir un archivo TAR hay que usar otra herramienta separada, como gzip, lzip o xz. Existen múltiples formatos de compresión porque cada uno fue desarrollado en una época distinta y trata de mejorar lo que ya existe. Por ejemplo, el último en aparecer es zstd, el cual promete grandes mejoras de rendimiento cuando se usa en centros de datos grandes.

Sin embargo, lo que hay que tener claro es que, a diferencia de ZIP, donde archivas y comprimes a la vez, en TAR son dos pasos separados. Si quieres crear una carpeta comprimida usando formatos libres, tendrías que:

  1. Juntar con TAR todos los archivos de un directorio en un mismo archivador (por ejemplo, datos.tar).
  2. Comprimir ese archivo (datos.tar), para convertirlo en datos.tar.gz, datos.tar.xz, datos.tar.bz2…
Esquema de la concatenación de un TAR y de su compresión por separado

Por lo general, la forma más correcta de tratar con un archivador comprimido es mantener las dos extensiones, para dejar claro que es un TAR comprimido con algún tipo de algoritmo. En este caso la extensión nos dirá qué tipo de algortimo tenemos que usar para descomprimir. Por ejemplo, .tar.gz nos dice que se trata de un tarball comprimido con gzip, .tar.xz que es un tarball comprimido con xz (LZMA), .tar.bz2 que está comprimido con Bzip2, etc.

Sin embargo, en muchas ocasiones nos vamos a encontrar que juntan ambas extensiones en una única por comodidad. Si somos capaces de entender que .tgz es lo mismo que .tar.gz, y que .txz es lo mismo que .tar.xz, estaremos bien.

RPM Fusion: qué es y cómo activarlo

RPM Fusion es un repositorio de software que trae paquetes adicionales que ni Fedora ni Red Hat empaqueta. En este artículo te cuento cómo puedes activarlo en tu distro.

RPM Fusion es un repositorio de software extra que se puede activar en Fedora, Red Hat y distribuciones derivadas de Red Hat, como CentOS o Rocky Linux. RPM Fusion empaqueta software que de otro modo, ni Fedora ni Red Hat quieren empaquetar, y lo proporciona mediante RPM para que se pueda instalar con herramientas como dnf o yum.

La razón por la que RPM Fusion existe es porque tanto Fedora como Red Hat están gobernados por las mismas políticas en cuanto a software que aceptan en sus repositorios. En particular, hay dos tipos de paquetes de software que suelen estar rechazados.

Aquellos que son privativos, es decir, que no tienen sus fuentes abiertas, suelen tener un rechazo directo por parte de Fedora y de Red Hat para empaquetarlo en sus sistemas. Esto incluye controladores de software publicados para GNU/Linux que no están bajo una licencia compatible con el software libre o que son directamente privativos. En algunos casos, pese a que el código no es abierto, el driver o el software se publica como «distribución permitida», lo que significa que aun así es legal crear copias de los mismos binarios para compartirlas.

En otro caso, se trata de software libre que tiene el código fuente publicado, pero que puede tener problemas de patentes en algunos países en los cuales Red Hat tiene que cumplir la jurisdicción. Suele ser el caso de la mayoría de versiones de codecs de audio y vídeo que, pese a estar publicados como software libre, a menudo juegan en la difusa línea que hay con las incómodas patentes de software. Si puede suponer un problema legal que Fedora o Red Hat porten ese software libre pero relacionado con patentes en su repositorio, es más que probable que no lo hagan.

Lo que precisamente hace con esto RPM Fusion es tomar todo ese software que, como se ve en ambos casos, es legal distribuir debido a los términos de sus licencias (o son libres, o se permite explícitamente distribuirlo), y empaquetarlo en un repositorio de RPM que sea compatible con dnf y con yum. Con esto se puede instalar ese software en distribuciones compatibles: Fedora Linux, Red Hat Linux, AlmaLinux, Rocky Linux, CentOS y otros derivados clónicos de Red Hat.

Mucho software, como los controladores de driver de NVIDIA o Broadcom, códecs como x264 o x265, e incluso programas completos, como Kdenlive, se distribuyen mediante RPM Fusion, y no se van a encontrar de otro modo en el repositorio principal de Fedora o de Red Hat.

Cómo activar RPM Fusion

En distribuciones recientes que utilicen el entorno de escritorio GNOME, una de las formas más simples de activar RPM Fusion es descargar el archivo RPM desde su página web.

Simplemente vamos a la sección «Graphical Setup via Firefox web browser» (que, pese al nombre, funcionará igual en otros navegadores que no sean Firefox, como Brave), y hacemos clic sobre el enlace que más se asemeje a nuestro sistema operativo. Si utilizas CentOS, AlmaLinux o Rocky Linux, solo recuerda que tu sistema operativo es «RHEL or compatible». En todos los casos, recuerda usar la versión correcta de tu sistema operativo, sea Fedora o Red Hat.

Cuando se descargue, únicamente quedará abrir el archivo descargado con GNOME Software, y pulsar el botón Instalar para cargar el contenido del archivo RPM en el sistema. Con esto se importará el repositorio, y la próxima vez que se busque un paquete, se hará una descarga del contenido de RPM Fusion.

Cómo activar RPM Fusion desde la línea de comandos

Pega uno de los siguientes comandos en la terminal de tu sistema operativo de acuerdo con la distribución y versión que estés usando. Recuerda comprobar antes lo que estás pegando en tu terminal. Además, se te van a pedir permisos de superusuario para hacer esta operación.

Activar RPM Fusion Free en Fedora 37 o 36

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Activar RPM Fusion non-free en Fedora 37 o 36

sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Activar RPM Fusion Free con RPM-OSTREE (En Fedora Silverblue)

sudo rpm-ostree install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

Activar RPM Fusion non-free con RPM-OSTREE (en Fedora Silverblue)

sudo rpm-ostree install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Activar RPM Fusion free en Red Hat, CentOS, AlmaLinux, Rocky Linux

Tendrás que usar dos comandos en vez de uno. Con esto descargarás el soporte para EPEL, un pack de Fedora que también incluye soporte para Linux Empresarial y que es compatible con Red Hat y similares.

sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm

sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm

Activar RPM Fusion free en Red Hat, CentOS, AlmaLinux, Rocky Linux

El primer comando no es necesario que lo ejecutes si ya lo has ejecutado como paso de la activación de RPM Fusion Free en el mismo sistema operativo.

sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm

https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm

Flatseal: controla los permisos de tus apps Flatpak

Si utilizas con regularidad aplicaciones Flatpak seguramente ya sepas que muchas de estas aplicaciones vienen por seguridad limitadas para que no tengan acceso más allá de donde realmente les haga falta. De este modo, si una aplicación todo lo que va a hacer es mostrar una página web dentro de algún tipo de ventana Electron, no habría por qué darle permisos para acceder a la carpeta personal (como mucho a la carpeta de descargas) o a los dispositivos de hardware como webcams o micrófonos.

Sin embargo, en algunas ocasiones nos podemos encontrar con aplicaciones que tienen más o menos permisos de lo que consideramos aceptable. ¿Por qué una aplicación de reloj debería tener acceso a internet? O por el lado contrario, si una aplicación de telecomunicaciones no tiene acceso por defecto a la webcam y al micrófono, difícilmente vamos a poder iniciar videollamadas.

Para este tipo de situaciones existen herramientas como Flatseal. Se trata de una aplicación gráfica que todo lo que hace es permitir hacer mediante clics lo que de otro modo tendríamos que hacer desde una terminal con la ayuda del comando flatpak override. Permite modificar los permisos que se le entregan a las aplicaciones instaladas desde Flatpak para así, o agregarle permisos para que puedan acceder a directorios adicionales que no se vieron venir si están provocando problemas de ejecución, o restringir todavía más los permisos de una aplicación si no confiamos del todo en ella.

Hay que tener en cuenta que, si bien algunas distribuciones se preocupan más del software que portan sus gestores de paquetes, Flatpak se ha convertido en el lugar del que descargar clientes gráficos de aplicaciones no tan libres y donde se desconoce del todo su funcionamiento. No estoy diciendo con esto que las aplicaciones de Flatpak sean inseguras, pero en algunos casos no se pierde nada por restringir a una aplicación cloud, como Discord, para que no tenga acceso a nada más que la carpeta de descargas, o para que no pueda ver la lista de procesos en ejecución, por si acaso están compartiendo esa información con terceras personas.

Captura de pantalla de Flatseal ajustando permisos
Flatseal mostrando una ventana de permisos.

La forma de utilizar Flatseal es sencilla. Después de instalarla desde Flathub, la ejecutas. Encontrarás en el panel de la izquierda una lista de las aplicaciones que tienes instaladas en tu equipo. También habrá una opción global arriba que te permitirá ajustar los permisos de todas las aplicaciones.

Una vez tengas marcada una aplicación, el panel de la derecha puede usarse para revocar permisos proporcionados por defecto cuando la aplicación se instala, o para proporcionarle permisos extra. Admisiblemente, no todos los permisos son fáciles de comprender. Esta es la razón por la que Flatseal tiene en su página de GitHub una documentación en forma de manual que te enseña para qué vale cada cosa y qué consecuencias puede tener encender o apagar una opción.

Tienes que tener en cuenta, para acabar, que no todas las aplicaciones van a reaccionar igual de bien a que se le prive de un permiso que da por sentado. Por ejemplo, es posible que algunas aplicaciones empiecen a fallar de formas feas si no tienen permiso para abrir la carpeta de descargas y esperan que puedan. En caso de que una aplicación deje de comportarse como lo normal, siempre puedes utilizar el botón Restablecer que hay en Flatseal para volver a dejarlo todo como estaba.

WattOS, una distro ligera y de poco consumo

WattOS R12 es la última versión de esta distribución minimalista basada en Debian y que cambia el entorno de escritorio y la experiencia inicial.

Este mes salió WattOS R12. Se trata de una distro desconocida porque por otra parte lleva demasiados años sin actualizarse. Sin embargo, su principal autor ha encontrado últimamente tiempo para poner al día su entorno y hace poco publicó la versión 12.

¿Qué es exactamente WattOS? Es una distro más casual y menos conocida que puede ser de utilidad para aquellas personas que quieran utilizar Debian Linux pero que no esten conformes con los defaults que trae éste. En particular, WattOS se caracteriza por utilizar LXDE como entorno de escritorio y por tener un subconjunto reducido de aplicaciones, algo que la convierte en una buena distro para utilizar en ordenadores antiguos… pero no mucho.

Y es que, pese a que Debian 11 está disponible para ordenadores de 32 bits que todavía utilicen la arquitectura i686, WattOS sólo está disponible en este momento en ordenadores de 64 bits, lo que significa que puedes utilizarla para revivir un ordenador viejo, siempre y cuando tenga un procesador compatible. En caso contrario, ni te esfuerces en descargar la ISO porque no se trata de una distro para ti.

Mira esta review como vídeo.

Además de traer LXDE preinstalado, esta distribución agiliza bastante el trabajo para que no haya que hacer lo mismo de siempre tras instalar Debian. En particular, por ejemplo, WattOS trae activos ya los repositorios contrib y non-free, para poder tener más software en el equipo, sobre todo drivers. También destaca que los repositorios de bullseye-backports vienen activos por defecto, para poder instalar versiones más modernas de algunos paquetes que de otro modo habría que obtener a mano.

Incluso antes de instalar WattOS, sorprende el hecho de que disponga de un entorno vivo, para probarlo antes de dar el paso de instalarlo, y que hayan sustituido el instalador típico de Debian por Calamares, un instalador agnóstico de plataforma que cada vez está disponible en más distros.

Finalmente, en cuanto a software preinstalado, además de aplicaciones típicas como PCManFM, gparted o LXTerminal, viene preinstalado VLC, Firefox y Transmission, entre otros programas. Esto es algo que se puede ampliar trayendo software mediante Flatpak. Destaca el hecho de que ya viene preinstalado, facilitando la instalación de software a través de alguno de los repositorios destacados, como por ejemplo Flathub, aunque tendrás que activarlo a mano.

Los requisitos del sistema no quedan del todo claros, aunque en caso de problemas, en su página web oficial proporcionan tanto un foro como un servidor de Discord para intercambiar más información.

Rocky Linux 9.1: novedades y cómo actualizar

Rocky Linux 9.1 ya está disponible, tanto para aquellas personas que quieran instalarlo por primera vez mediante sus múltiples ISOs, como a través del sistema de actualizaciones para usuarios de Rocky Linux 9.0.

Con un par de semanas de diferencia respecto a la publicación de la versión upstream de Red Hat 9.1 aparece Rocky Linux, el primer parche mayor para la versión 9 de Rocky Linux.

Esta distribución es compatible a nivel binario con Red Hat Enterprise Linux, debido a que toman las fuentes con las que se generan las ISOs de Red Hat, les cambian las marcas y los nombres, y con ello fabrican una distro diferente. Este proceso es correcto y es el mismo que durante tantos años estuvo haciendo CentOS, hasta que fue apartado y descontinuado en 2020. De hecho, Rocky Linux es un proyecto dirigido por Gregory Kurtzer, que fue quien empezó también el proyecto CentOS, así que experiencia hay.

Sin embargo, el hecho de que sea una distribución derivada de Red Hat implica que no tiene mucho margen de maniobra. Las novedades que tiene Rocky Linux 9.1 son las mismas que se han visto ya en Red Hat 9.1, e incluso en otras distribuciones clónicas de CentOS que ya han aparecido a estas alturas, como AlmaLinux 9.1. Sin embargo, sigue siendo valioso igualmente para quienes hayan instalado Rocky Linux 9 en sus servidores.

Para actualizar desde Rocky Linux 9.0, todo lo que tienes que hacer es ejecutar sudo dnf upgrade -y en algún momento, si es que todavía no lo has hecho a estas alturas. Como parte del proceso de actualización, se instalará la siguiente versión del sistema operativo y pasarás a utilizar la versión 9.1, como puedes comprobar si consultas el contenido del archivo /etc/rocky-release.

En cuanto a las novedades, según las notas de versión publicadas en su página, la principal característica a destacar es la llegada de Keylime. Se trata de una herramienta pensada para hacer remote boot attestation, que es algo que los administradores de sistemas hacen para asegurarse de que el software que está ejecutándose en una máquina es el correcto y que no ha sido modificado. En este caso se trata de un atestado remoto, así que se puede usar para comprobar granjas de servidores desde un host de control. Se aprovecha de las características de TPM de los ordenadores modernos para este propósito.

Por lo demás, otras novedades a destacar son la incorporación de NodeJS 18, PHP 8.1 y Ruby 3.1 al sistema de módulos de DNF. Algunos paquetes de sistema como los compiladores de GCC, LLVM, Golang o Rust también han sido actualizados a sus versiones más recientes.

Diccionario: LTS

Algunas distribuciones GNU/Linux suelen anunciar en su página web el lanzamiento de versiones LTS. Por ejemplo, en el caso de Ubuntu. ¿Qué quiere decir LTS?

Algunas distribuciones GNU/Linux suelen anunciar en su página web el lanzamiento de versiones LTS. Por ejemplo, en el caso de Ubuntu. ¿Qué quiere decir LTS?

LTS son las siglas de Long Term Support, y hace referencia a que se trata de versiones que van a recibir soporte por parte de los maintainers de la distribución durante más años que una versión regular.

En todas las distribuciones de GNU/Linux serias que encontremos por internet, va a haber una persona o grupo de personas a cargo del mantenimiento. Esto incluye detectar y corregir errores que se puedan producir en la versión, o fundamentalmente el coordinar la entrada de actualizaciones por parte de otros paquetes. Por ejemplo, si KDE corrige un bug en Plasma y la distribución porta KDE Plasma en sus repositorios, el soporte hace referencia a que eventualmente tu gestor de paquetes te traiga la actualización que corrige ese bug porque quien está manteniendo la versión de tu distro se ha ocupado de importar en el gestor de paquetes esa versión corregida.

Soportar versiones de GNU/Linux es complicado y lleva esfuerzo, porque hay que vigilar y en algunos casos securizar y validar correcciones de errores a muchos paquetes para asegurarse de que un arreglo en un paquete no causa problemas en otro. Simultáneamente, las distribuciones GNU/Linux a menudo buscan sacar versión cada pocos años para hacer evolucionar la plataforma, cambiando la arquitectura de la distro. Por ejemplo, cambiar a systemd, cambiar a PipeWire…

Estas dos cosas provocan que sea imposible estar perpetuamente dando soporte a una versión de una distribución GNU/Linux. Es mejor centrar sus esfuerzos en un conjunto de versiones limitada e ir rotando. Esto quiere decir que cuando una nueva release de la distribución sale, la más antigua pierde soporte, para que su equipo se centre en corregir los errores de una.

Generalmente las distribuciones tienen un calendario de publicación. Por ejemplo, sacan una nueva ISO y una nueva versión (Debian 8, Debian 9, Debian 10…) cada 2-3 años, o cada 6 meses, o el primer día de cada mes de abril, por decir algo. Y también establecen una duración para el soporte a esa versión. Por ejemplo, durante los siguientes 9 meses, durante los siguientes 2 años, o hasta que pasen 3 meses de la salida de la siguiente versión de nuestra distro.

Las versiones LTS están marcadas porque no son así. En este caso, el soporte durará más tiempo. Por ejemplo, durante 5 años o durante 10 años desde el lanzamiento de la versión. Esto las hace ideales para instalar en entornos donde queramos no estar cambiando cada dos por tres de sistema operativo o actualizando la versión, por los posibles problemas que pueda traer. Esta es la razón por la que es preferible en un servidor web instalar Ubuntu 22.04, que es una versión LTS, a Ubuntu 22.10, que es una versión que no es LTS y que al cabo de 9 meses tendrá que ser sustituida por otra.

Algunos ejemplos de distribuciones que tienen soporte a largo plazo son:

  • Ubuntu. Si bien las versiones regulares se publican con soporte a 9 meses, la versión que sale cada abril de año par (es decir, la 18.04, la 20.04, la 22.04, la 24.04…) es LTS, y tiene soporte durante varios años. Esto la converte en la distro de preferencia para instalar en entornos donde no deba ser tocada en varios años.
  • RHEL y derivadas. Por ejemplo, EuroLinux, Oracle Linux o Rocky Linux. Se tratan de versiones que igualmente parten del código fuente de Fedora, pero que tienen un soporte de varios años (hasta 10 años).
  • Debian. Sale una versión de Debian aproximadamente cada 2 años. El soporte de cada una de estas versiones dura 3 años. Sin embargo, sigue existiendo un soporte a largo plazo que dura más años, por lo que se puede estar aprovechando una instalación hasta 5 años hasta que llegue el momento de despedirse de ella definitivamente.

Cómo crear y abrir archivos TAR desde la terminal

Te traigo un tutorial para que aprendas a usar el comando TAR, con el que puedes generar este tipo de archivos que tan útiles resultan para archivar o transmitir múltiples ficheros o carpetas.

Un archivo TAR es un contenedor que empaqueta múltiples ficheros y directorios en un único fichero para hacerlo más fácil de archivar y distribuir. Normalmente nos encontramos los archivos TAR cuando descargamos paquetes de internet, como código fuente de programas o distribuciones ejecutables, porque es más fácil de descargar un único archivo con todo el código fuente o con todo el programa, que descargar manualmente docenas de archivos con el riesgo de que no estén actualizados.

TAR en realidad son las siglas de tape archiver, y es que este programa fue diseñado en los tiempos en los que los archivos de este tipo, por ejemplo, las copias de seguridad, se hacían sobre cinta magnética. Ahí queda claro que el propósito de TAR era condensar toda una estructura de ficheros y directorios en un mismo flujo de datos que enviar a una cinta magnética, guardándolo para el futuro. Sin embargo, hace muchos años que las cintas magnéticas fueron superados por otros formatos más baratos y fáciles de usar, como los discos duros y las memorias de estado sólido, por lo que TAR, evidentemente, te va a permitir también compactar esos ficheros y directorios sobre un archivo regular que vas a poder compartir en un pendrive o subir a tu almacenamiento en la nube. Este es un dato que puede que ahora mismo te resulte más una anécdota, pero que puede que te explique cosas cuando inicie el tutorial.

Una cosa que debes tener en cuenta es que TAR no comprime archivos, solamente los empaqueta. Esta es una de las características de la filosofía UNIX, presente hoy día en sistemas operativos como GNU/Linux o cualquier BSD, entre muchos otros. Si lo que queremos es utilizar tecnologías libres para crear archivos comprimidos, igual que haríamos en Microsoft Windows con otros formatos como el 7z o el RAR, primero tendremos que crear un TAR del directorio a comprimir, y luego comprimir por separado el archivo .tar resultante. La ventaja de este sistema es que existen múltiples formatos de compresión de archivo, y al separar ambos pasos, podemos elegir el que nos interese para cada caso de uso, o incluso prescindir de la compresión. Si vas a crear un tarball de algunos tipos de archivo, como vídeo o imágenes JPG, tienes que saber que esos tipos de archivos ya llevan compresión, por lo que volver a comprimir el TAR generado no te va a aportar mucho.

Cómo creo un archivo TAR desde la línea de comandos

Para crear un archivo TAR, todo lo que tienes que hacer es identificar primero el fichero o directorio que quieres empaquetar. En este caso, por ejemplo, vamos a empaquetar una distribución de código fuente que queremos archivar en nuestra copia de seguridad.

workstation ~/CodigoFuente $ ls
fs.c  fs.h  gui.c  gui.h  main.c  Makefile  network.c  network.h  README

En este caso, lo más recomendable sería crear un archivo TAR de todo el directorio CodigoFuente completo. Cuando fabricas un archivo TAR, toda la estructura de directorios se mantiene. Esto quiere decir que si comprimo la carpeta CodigoFuente, dentro del TAR se recordará cada uno de los subdirectorios que existen, y a qué directorio le pertenece cada uno de los ficheros que hay dentro del archivo. Y esto es ventajoso porque cuando lo extraigamos posteriormente, nos dejará los archivos colocados en una subcarpeta, para un acceso más limpio.

Se trata de evitar lo que de otro modo se conoce como tarbomb. Una «tarbomb» o «bomba TAR» ocurre cuando al extraer un archivo, nos llena el directorio actual de archivos extraídos, haciendo mucho más complicado encontrar cuáles son los archivos que vienen del TAR y cuáles son los que ya estaban en el directorio de trabajo antes de iniciar la extracción. Es una mala práctica y van a odiarte mucho si esto ocurre, por lo que lo mejor es comprimir la carpeta completa desde arriba:

Nos vamos a ir al directorio superior y vamos a ejecutar el siguiente comando para comprimir:

workstation ~/CodigoFuente $ cd ..
workstation ~ $ tar -cvf CodigoFuente.tar CodigoFuente
CodigoFuente/
CodigoFuente/network.h
CodigoFuente/main.c
CodigoFuente/gui.c
CodigoFuente/fs.h
CodigoFuente/Makefile
CodigoFuente/network.c
CodigoFuente/fs.c
CodigoFuente/gui.h
CodigoFuente/README

Os describo qué se ha hecho aquí. El comando tar, que es el que se usa para crear y abrir archivos de tipo tar, está lleno de opciones. Podemos ver un extracto de estas opciones si ejecutamos el comando tar --help, aunque también podemos ver en detalle un manual de instrucciones si ejecutamos man tar y nos leemos su manpage.

Podemos modificar muchísimos aspectos a la hora de crear archivos, incluyendo la posibilidad de actualizar un TAR ya existente, o de conservar la información de permisos de archivo en un sistema UNIX. En este caso, no le estoy dando tantas opciones: apenas le dí los siguientes flags, -cvf. Si vamos a pasarle varias opciones, podemos simplificarlo y en vez de escribirlo como -c -v -f, lo podemos pasar todo junto como -cvf. El efecto será el mismo.

En este caso, las opciones que le he dado son:

  • -c: con esta opción, lo que le digo a TAR es que vamos a crear un archivo TAR. Debería venir de las primeras, ya que esta opción es la que le dice al programa qué va a hacer hoy, si crear, listar o extraer.
  • -v: con esta opción voy a activar el modo verboso. Esto significa que cada vez que TAR procese un archivo, va a escribir a la terminal una línea diciendo cómo se llama el archivo que se ha procesado. Esto nos viene bien para dar seguridad, aunque en algunos casos podemos quitar la opción para hacer más silenciosa la ejecución.
  • -f: con esta opción, le especifico que quiero que me procese el TAR sobre un archivo. Este paso parece obvio pero hay que aclararlo, por las razones que comentábamos antes: TAR es realmente capaz de volcar datos en muchas partes, archivos, cintas e incluso sobre la salida estandar en bruto. Por lo tanto, tenemos que especificar la opción -f para pedirle que vuelque sobre un archivo, cuyo nombre, de hecho, tiene que venir después. Por eso, a continuación de la opción -f nos encontramos ese CodigoFuente.tar. Con esto le estamos diciendo cómo queremos que se llame el archivo de código fuente que queremos que nos genere.

Después del CodigoFuente.tar que pertenece a esa opción -f, tenemos que poner la lista de archivos regulares y directorios que queremos incluir en el archivo. En este caso voy a poner simplemente CodigoFuente porque quiero que me incluya el directorio con todos sus descendientes. Si quisiésemos incluir más elementos en el archivo, podríamos poner la lista completa. Por ejemplo, tar -cvf Salida.tar Carpeta1 Carpeta2 Carpeta3 Leeme.txt.

Una vez ejecutamos el comando, tenemos nuestro archivo CodigoFuente.tar correctamente creado.

Cómo listo el contenido de un archivo TAR

Supongamos que tenemos un archivo TAR y queremos saber lo que hay dentro sin extraerlo. Igual que podemos usar la opción -c para crear un archivo TAR, tenemos más opciones para inspeccionar o para extraer el contenido de uno de estos archivos.

Veamos cómo utilizar la opción -t, que lo creas o no quiere decir --list, es decir listar el contenido de un archivo. Para este ejemplo, he colocado en mi carpeta de descargas un paquete que he obtenido de internet y que está en formato TAR:

workstation ~/Downloads $ ls
gzip-1.12.tar
workstation ~/Downloads $ tar -tf gzip-1.12.tar
gzip-1.12/
gzip-1.12/gzip.1
gzip-1.12/zcmp.in
gzip-1.12/cfg.mk
gzip-1.12/configure.ac
gzip-1.12/gunzip.1
gzip-1.12/zmore.in
gzip-1.12/zip.c
gzip-1.12/zless.in
gzip-1.12/zforce.in
[etc]

En este caso, como se ve, el comando que he usado es tar -tf. La explicación de parámetros me va a llevar menos tiempo:

  • -t, como he dicho, pone TAR en modo listar. No se va a extraer nada, solamente se va a enumerar lo que hay dentro del archivador. El resultado del comando se volcará sobre salida estandar, lo que significa que lo veremos en nuestra terminal o que lo podremos mandar a otro programa.
  • -f es, de nuevo, la opción que usamos para especificar que queremos trabajar con un archivo, ya que de otro modo le podríamos especificar otra fuente de datos; tal vez un flujo de entrada estandar que venga de un lugar como pueda ser internet o incluso un lector de cintas magnéticas de verdad. Y de nuevo, le especificamos a continuación el archivo que queremos que procese.

En este caso, no le estoy proporcionando la opción -v porque el comando va a generar igualmente una lista de resultados quiera o no, así que no es necesario especificarlo.

Cómo extraigo un archivo TAR

Finalmente, vamos a ver como extraer un archivo. Se hace, como antes, modificando los parámetros que le pasamos al comando tar, y poniéndolo esta vez en modo extracción, que es la opción -x, de extract.

Vamos a hacer el ejemplo usando el mismo paquete que he mostrado en el caso anterior.

workstation ~/Downloads $ tar -xf gzip-1.12.tar 
workstation ~/Downloads $ ls
gzip-1.12  gzip-1.12.tar
workstation ~/Downloads $ ls gzip-1.12
aclocal.m4      gzip.doc     unzip.c
algorithm.doc   gzip.h       util.c
AUTHORS         inflate.c    zcat.1
bits.c          INSTALL      zcat.in
build-aux       lib          zcmp.1
cfg.mk          lzw.h        zcmp.in
ChangeLog       m4           zdiff.1
ChangeLog-2007  maint.mk     zdiff.in
configure       Makefile.am  zegrep.in
configure.ac    Makefile.in  zfgrep.in
COPYING         NEWS         zforce.1
deflate.c       README       zforce.in
dfltcc.c        revision.h   zgrep.1
dist-check.mk   sample       zgrep.in
doc             tailor.h     zip.c
GNUmakefile     tests        zless.1
gunzip.1        THANKS       zless.in
gunzip.in       TODO         zmore.1
gzexe.1         trees.c      zmore.in
gzexe.in        unlzh.c      znew.1
gzip.1          unlzw.c      znew.in
gzip.c          unpack.c

En este caso, he prescindido de la opción -v. De habersela dado, podría obtener un listado de los archivos que se iban extrayendo a medida que esto iba ocurriendo. Os he querido enseñar aquí que no siempre es necesario poner el comando en modo verboso, y que a veces se puede extraer en silencio. Sin embargo, si vamos a extraer grandes copias de seguridad desde la terminal y no nos molesta, tal vez nos interese presentar con la opción -v un progreso de la extracción, para saber por lo menos que todo está yendo bien cuando miremos la terminal.

En este caso, el comando completo que he usado tiene como parámetros -xf. Como os hacéis a la idea, la opción f sirve para decirle cómo se llama el archivo que queremos extraer. Sin embargo, en este caso, la opción -x es la que usamos para, como os digo, pedirle a TAR que extraiga.

Por suerte, este paquete está bien montado y cuando se extrae genera un directorio llamado gzip-1.12 con el código funete de la aplicación. Si entre manos tuviésemos una tarbomb, mi directorio de descargas ahora estaría lleno de archivos, y yo tendría que echar más tiempo en limpiar luego, con el fin de quitar lo que sirve y lo que no.

Alpine Linux 3.17, nueva versión de la distro minimalista

Ha salido Alpine Linux 3.17, la última versión de esta distribución minimalista que se caracteriza por utilizar BusyBox en vez del userland de GNU.

Alpine Linux es una distribución Linux que se caracteriza por dos cosas. En primer lugar, por ser compacta. Para ello, prescinde de herramientas que en otras distros se da por hecho, como Bash, glibc o el resto de herramientas de GNU, sustituyendo su userspace por BusyBox y por MUSL. Hasta cierto punto, eso implica que no es una distro GNU/Linux, sino una distro Linux (a secas). En segundo lugar, está diseñado para ser segura. Al ser tan pequeña, es más fácil de protegerla, lo cual la hace también pensada para equipos como routers, firewalls o servidores. También en los últimos años se ha puesto de moda en Docker debido a que permite crear imágenes más pequeñas.

Eso no quiere decir que no se pueda instalar Alpine Linux en un sobremesa o en un portátil si así lo deseas. Tiene un gestor de paquetes con el que puedes obtener cualquier herramienta extra que esté en su repositorio de software. Sin embargo, tienes que tener en cuenta que, debido a que utiliza musl en vez de glibc, es posible que algunas aplicaciones se nieguen a funcionar si no están programadas de forma portable y si asume que tu distro es GNU.

Recientemente, Alpine Linux ha publicado la versión 3.17.0. De acuerdo con su changelog, el cambio más significativo es la actualización de OpenSSL a la versión 3. Será posible seguir utilizando OpenSSL 1.1 en aquellas aplicaciones que todavía lo requieran mediante la instalación de un paquete de compatibilidad.

Debido a que la distro trae poco software preinstalado, tampoco hay mucho más que decir. No obstante, en su gestor de paquetes se han actualizado las versiones de algunos paquetes relevantes. Para aquellas personas que quieran instalar el userland de GNU, paquetes como Bash y GCC ahora traen las últimas versiones. También están disponibles para instalar GNOME 43, KDE Plasma 5.26. Además, herramientas de desarrollo y soporte a lenguajes de programación como bases de datos y entornos de ejecución han sido actualizados a la versión más reciente disponible.

Puedes descargar Alpine Linux para multitud de arquitecturas y de entornos desde su página web.

AlmaLinux 9.1: novedades

AlmaLinux 9.1, una de las dos distribuciones GNU/Linux sucesoras de la extinta CentOS, fue recientemente publicada al coincidir con el lanzamiento de RHEL 9.1.

Con la salida de Red Hat Enterprise Linux 9.1 la semana pasada, también cabe ahora anunciar el lanzamiento de AlmaLinux 9.1. Esta distribución coincide en número de versión porque AlmaLinux no es más que una recompilación de las fuentes de Red Hat Enterprise Linux, quitándole todas las marcas registradas de Red Hat Enterprise Linux, y sustituyéndolo por el suyo propio. AlmaLinux es un proyecto patrocinado por CloudLinux, una empresa que también vende su propia distribución derivada de RHEL, denominada CloudLinux OS, y que está pensada para proveedores de hosting cloud.

Debido a que esta distribución está basada en Red Hat Enterprise Linux 9.1, y a que buscan tener compatibilidad binaria 1.1 con Red Hat (algo que permite tomar un RPM diseñado para RHEL 9, instalarlo tal cual en AlmaLinux 9 y que funcione sin más), tampoco se trata de una distribución muy innovadora. Se limitan a repetir los cambios y las correcciones que hace el equipo de Red Hat y a replicar el código fuente de RHEL para mantener una cierta sincronización entre ambas distribuciones.

Aun así, AlmaLinux 9.1 incorpora estos cambios en un changelog que publica en su wiki, y que para esta versión sale con las siguientes novedades en materia de corrección de errores y actualizaciones.

Una de las principales novedades de esta versión es Keylime, una herramienta que sirve para monitorizar nodos remotos (por ejemplo, el resto de serviores de un cluster o de una cloud privada) mediante una técnica conocida como atestación de arranque, con la que se puede vigilar que el hardware sobre el que está corriendo el servidor no ha sido comprometido utilizando para ello el sistema TPM del procesador.

Debido a que WEP no está disponible en AlmaLinux 9, se ha corregido un bug que había en NetworkManager para la versión 9.0, que provocaba que igualmente se ofreciese como opción. Ahora NetworkManager indicará que no es posible utilizarlo.

Se han actualizado paquetes de la distribución base. Por ejemplo, en el sistema Module Streams ahora se puede obtener NodeJS 18 y PHP 8.1. Además, herramientas del sistema como valgrind, elfutils o las toolchains de GCC, LLVM, Rust y Go han sido actualizadas a las versiones más recientes.

Para los detalles más importantes, AlmaLinux recomienda consultar el changelog de RHEL 9.1, ya que los cambios que haya en esta distribución, habrán sido absorbidas también por AlmaLinux 9.1.

Es posible descargar AlmaLinux en tres versiones: la edición DVD, que también incluye todo el software que puede caber en el disco, pensada fundamentalmente para entornos donde no va a haber conexión a internet durante el proceso de configuración de la máquina. Para aquellos entornos donde el software no esencial se pueda instalar después, es posible obtener la versión Minimal, que permite una instalación offline pero en la que ciertas cosas, como el entorno de escritorio, no se instalan de serie. Y finalmente, la edición Boot requiere sí o sí conexión a internet durante el proceso de instalación.

¿Qué es RISC-V?

En los últimos tiempos se han visto avances en la arquitectura RISC-V y ya tenemos desde placas disponibles al público general hasta incluso ordenadores. ¿En qué consiste la arquitectura RISC-V?

De aquí a que acabe el mes idealmente, Pine64 pondrá a la venta la Ox64, un SBC embebido que, con un precio de venta de 6 a 8 dólares, promete llevar los sistemas operativos en tiempo real (RTOS) así como Linux a una pequeña placa que funciona gracias a un grupo de procesadores de arquitectura RISC-V. También este año vimos el lanzamiento del ROMA, un ordenador portátil con cuerpo de portátil normal como los que ya conocemos, pero corazón que funciona gracias a un procesador quadcore, también de arquitectura RISC-V.

¿De dónde sale RISC-V y qué es lo que pretende? Es muy probable que en los próximos años sigamos escuchando más sobre este tipo de procesadores por lo que cabe preguntarse qué cosas pretende poner sobre la mesa.

RISC-V es una arquitectura de procesadores, igual que otras ya existentes en el mercado a día de hoy como la vieja x86, la AMD64 o la ARM. Es decir, es una familia de procesadores completamente nueva y diferente que puede alimentar todo tipo de dispositivos, desde pequeñas placas embebidas para usar en ordenadores SBC hasta ordenadores personales completos y portátiles como los que hemos empezado a ver este año.

Si bien en este momento va a ser complicado ver la arquitectura RISC-V en listas como la Top500, uno de los puntos fuertes de esta arquitectura es su bajo consumo, lo que precisamente la convierte en la arquitectura perfecta para dispositivos pequeños, como placas embebidas, donde las restricciones tampoco permiten excederse demasiado en cuanto a la potencia energética disponible para la propia placa.

El ROMA es un ordenador portátil equipado con un procesador RISC-V.

De todos modos, existe otra razón muy importante por la cual RISC-V va a dar que hablar, sobre todo en el segmento del software libre y de código abierto, y es por el hecho de que RISC-V es una arquitectura de computadores abierta. Aquí existe una confusión que convendría aclarar. No se trata de que RISC-V sea una arquitectura de computadores libre, como se escucha por ahí. Más bien se trata de que las especificaciones de RISC-V están disponibles sin necesidad de pagar royalties.

RISC-V sólo es una especificación. Detrás de RISC-V está la RISC-V Foundation, que se fundó en 2015 y que es quien coordina los esfuerzos por publicar avances y actualizaciones de las especificaciones que hacen funcionar los procesadores RISC-V. En este comité hay empresas de todo tipo, desde tecnológicas como Google o Huawei, hasta organizaciones como la CNCF o la ESA. Curiosamente, Intel, AMD y NVIDIA también forman parte de esta alianza.

Sin embargo, por decirlo de algún modo, lo único que la RISC-V Foundation hace es publicar PDFs. Aparte de las especificaciones, no hay ninguna marca oficial que fabrique los procesadores, como sí ocurre en el caso de otras arquitecturas. En su lugar, son otras marcas de chips quienes fabrican los procesadores RISC-V y los comercializan como «compatibles con RISC-V». Algunas de estas marcas son Bouffalo Lab, Allwinner o Alibaba Group.

Ahora bien, vamos con lo verdaderamente interesante aquí para el ecosistema libre. Las especificaciones de RISC-V están disponible sin royalties ni otro tipo de cobros, lo que las hace completamente abiertas. Cualquier organización que desee fabricar una línea de ordenadores RISC-V puede tomar las especificaciones y comercializar un procesador acorde con ellas. Esta es la principal diferencia respecto a otras arquitecturas similares como ARM, que también trabajan con un modelo de «nosotros especificamos, vosotros fabricáis», pero donde ARM sí que cobra royalties por el uso de la especificación para crear placas y chips.

La Ox64 es un ordenador de tipo SBC (ordenador monoplaca), equipado con un procesador RISC-V que puede ejecutar GNU/Linux

Sin embargo, parte de la confusión que hay con RISC-V está en cuanto a qué ocurre cuando un diseñador de chips tiene acceso a esas especificaciones y fabrica un procesador concreto que implemente RISC-V. Y es que no es obligatorio para ese fabricante publicar sus diseños. De hecho, la mayoría de las implementaciones de RISC-V son privativas, es decir, el acceso al diseño está restringido. De este modo, muchos fabricantes se diseñan sus propios chips, que comercializan por su cuenta.

Existen algunas implementaciones de RISC-V que sí que son abiertas. Es el caso de la XuanTie 910 del Alibaba Group, por ejemplo, que es una de las más destacadas y que precisamente hace funcionar al portátil ROMA. En este caso, existe una versión denominada OpenXuanTie, cuyos diseños en Verilog son abiertos y están disponibles a través de internet.

¿Qué impacto podrá tener RISC-V en los próximos años? En el mundo de los ordenadores embebidos tienen mucho potencial. En otros terrenos, como el de la computación móvil y de escritorio (como teléfonos y ordenadores), compite con ARM en el juego de robarle terreno a arquitecturas como la x86-64, que tal vez no esté pasando por su mejor momento. Intel, uno de los principales fabricantes de x86-64, sabe esto. Esta es la razón por la que en los últimos años se hayan interesado tanto en esta arquitectura. En los últimos tiempos, presentaron la Nios V, una FPGA que utiliza la arquitectura RISC-V.

En definitiva, los grandes fabricantes huelen algo y están probando a poner sus huevos también en esta cesta, por si en unos años les entregase beneficios. Esta arquitectura nos puede dar algunas sorpresas a lo largo de esta década.