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.

¿dnf update o dnf upgrade?

Una pregunta rápida requiere una respuesta rápida. Hoy: ¿se debe usar dnf upgrade, o dnf upgrade?

La respuesta es: por ahora da igual. dnf upgrade es el comando correcto. Sin embargo, dnf update es un comando obsoleto que hoy día se comporta como alias para el otro comando. Eso significa que ejecutes el comando que ejecutes, el resultado será el mismo.

La pregunta que cabe hacerse ahora, por cierto, es si en algún momento el comando dnf update estará tan obsoleto que lo terminen por quitar. En ese caso, es de esperar que nos demos cuenta porque deje de funcionar el comando.

Tienes más información en la guía de usuario de DNF.

Cómo configurar Flatpak en Debian 11 Bullseye

Flatpak es un formato neutro para la distribución de aplicaciones gráficas en GNU/Linux, y en este artículo te explico cómo puedes instalar el soporte para Flatpak en Debian 11.

Flatpak es un formato de distribución de aplicaciones que se ha vuelto bastante popular en los últimos años porque permite fácilmente distribuir versiones consistentes, estables y seguras de aplicaciones en una gran variedad de distribuciones GNU/Linux.

De este modo, los desarrolladores que fabrican las aplicaciones tienen una forma unificada de distribuir de forma segura aplicaciones para que las últimas versiones del software que desarrollan pueda ser utilizado por los usuarios finales, independientemente de la política de actualizaciones que tenga la distribución que se esté usando.

Otra de las ventajas de Flatpak es el hecho de que las aplicaciones pueden correr bajo una política de seguridad especial, que impida a las aplicaciones tener acceso a más directorios del ordenador de lo que sea estrictamente necesario para hacer funcionar la aplicación, o aislar completamente al proceso para que no pueda ver la lista real de procesos que se están ejecutando en el sistema.

Debido a que en Flatpak se proporciona una forma clara de instalar las dependencias, también ahorra los problemas derivados de que un paquete dependa de una biblioteca que no está disponible en el ordenador. Por ejemplo, es posible usar paquetes que usan la versión más reciente de Qt o de GTK+, incluso si tu Debian te instaló una versión más vieja.

Instalar Flatpak en Debian 11

Flatpak está disponible en los repositorios centrales de Debian, por lo que es muy fácil de activar esta función, si instalas el paquete flatpak. Esto lo puedes hacer desde un gestor de paquetes visual (como Synaptic o GNOME Software), o bien desde la línea de comandos usando el siguiente comando

sudo apt install flatpak

Configurar Flathub

Las aplicaciones en Flatpak se organizan en repositorios. El principal repositorio de Flatpak es Flathub, donde encontrarás un catálogo de software libre y no libre que puedes instalar fácilmente en tu ordenador si estás usando Flatpak.

Ten en cuenta que existen más repositorios de Flatpak por ahí. Por ejemplo, tanto GNOME como KDE tienen su propio repositorio Flatpak adicional, donde publican sus propias aplicaciones, para que las puedas instalar independientemente del ciclo de vida de los paquetes de tu sistema operativo.

En una terminal, utiliza el siguiente comando para agregar el repositorio de Flathub a tu ordenador:

sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Instalar aplicaciones Flatpak desde la línea de comandos

Ahora que hemos metido Flathub como repositorio en nuestra máquina, podemos instalar paquetes de Flathub. En el siguiente ejemplo, me voy a fijar en Plots, una aplicación que sirve para dibujar gráficas, y que está disponible en Flathub.

Si visitamos la página de Flathub, encontramos instrucciones que nos guían en el proceso de instalación de una aplicación.

Instrucciones para la instalación de un programa
Instrucciones para instalar aplicaciones en Flathub

Si copio y pego el primer comando (flatpak install...), el sistema me hará varias preguntas para confirmar si estoy de acuerdo con los cambios que va a hacer en mi ordenador. Principalmente, me listará los paquetes que va a instalar, que no tiene por qué ser únicamente la aplicación, sino también algunos runtimes como GTK+, GNOME Platform, KDE Platform…

Todo lo que tengo que hacer es confirmar los cambios si estamos de acuerdo respondiendole afirmativamente a las preguntas que nos hará. Una vez se hayan descargado e instalado los distintos paquetes (que puede tardar sobre todo si es la primera vez por aquello de que hay que instalar bastantes entornos de ejecución), podremos lanzar la aplicación usando el comando flatpak run que también podemos copiar y pegar, o bien desde el menú de aplicaciones si lo tenemos bien configurado.

Captura de pantalla de Plots
Plots ejecutándose desde Flatpak

Instalar aplicaciones de forma gráfica

Si no te gusta la terminal, es posible también usar herramientas gráficas. Flatpak se integra con KDE Discover, así que si utilizas KDE, es muy posible que ya puedas buscar e instalar aplicaciones desde Discover.

Sin embargo, si estás usando GNOME, deberás instalar también un plugin para que se puedan listar desde GNOME Software. Este paquete se llama gnome-software-plugin-flatpak y lo puedes instalar usando APT o un cliente gráfico como Synaptic.

A partir de este momento, podremos listar e instalar aplicaciones de forma gráfica usando GNOME Software:

GNOME Software mostrando la instalación de un programa
Veloren es un videojuego que se distribuye mediante Flatpak

Fedora 37 ha salido: cómo actualizo

Hoy 15 de noviembre sale Fedora 37, así que como siempre, cabe resolver las preguntas típicas: ¿cómo actualizo a Fedora 37? ¿Vale la pena formatear?

Hoy 15 de noviembre sale Fedora 37, estando disponible para su descarga de forma oficial desde su página web. Debido a una serie de problemas con algunos bugs que fueron considerados como críticos, la publicación de la versión, inicialmente prevista para la segunda quincena de octubre, se ha venido retrasando semana a semana y sale un mes más tarde de lo esperado. Sin embargo, nunca es tarde si la dicha es buena.

En este blog ya te contamos el mes pasado un resumen de las novedades de Fedora 37, que se pueden resumir en una actualización integral a GNOME 43, haciendo que más aplicaciones se pasen a la nueva versión del lenguaje de diseño Adwaita. Hay cambios sensibles en aplicaciones como el explorador de archivos y el calendario. Además, ahora también será posible instalar páginas web como aplicación si se está usando la versión Flatpak de GNOME Web. Entre otras novedades, también el soporte para Raspberry Pi 4 y la retirada del soporte a la arquitectura ARMv7.

¿Debería actualizar Fedora o instalarlo de cero?

Cada vez que sale una actualización surge la misma pregunta: ¿debo formatear mi ordenador para actualizar Fedora o puedo simplemente realizar una actualización? Este es un proceso que depende de muchos factores: de qué tipo de instalación tengas en tu ordenador, cómo de fácil te vaya a ser recuperar luego el estado de tu entorno de escritorio si formateas (por ejemplo, el tiempo que te pueda tomar volver a instalar todos los plugins y programas después de instalar), y también de tus gustos personales. Hay gente que simplemente prefiere formatear su ordenador cada 6 meses para dejarlo todo limipo como la patena.

Debes saber que Fedora tiene un método de actualización de versiones. Eso significa que, si no quieres, no tienes por qué formatear tu ordenador para actualizar Fedora. Te basta con actualizar de una distribución a otra para cambiar de versión. Si con eso es suficiente, habrás terminado.

Recuerda comprobar que tienes una copia de seguridad actualizada de tu ordenador (incluyendo esos dotfiles que no suelen ser visibles desde la interfaz de usuario) antes de iniciar cualquier tipo de instalación o actualización, por si el proceso pudiese fallar.

Banner ofreciendo actualizar a Fedora 37
Banner ofreciendo la actualización a Fedora 37.

Cómo actualizar a Fedora 37

Existen dos formas de actualizar a Fedora 37. De cualquiera de las dos maneras, es esencial antes de iniciar el proceso de actualización de Fedora, que compruebes que tu distribución está igualmente al día en cuanto a actualizaciones de otros paquetes regulares del sistema. Descarga, instala y reinicia las actualizaciones pendientes.

La primera forma de actualizar Fedora, y también la más directa, sobre todo si estás utilizando el spin oficial de Fedora, es utilizar la aplicación GNOME Software para ello. Cuando sale una nueva versión de Fedora, se muestra un mensaje avisando de ello en la sección Actualizaciones de tu aplicación.

Todo lo que tienes que hacer es iniciar el proceso pulsando el botón principal de la notificación, una vez te hayas asegurado de tener tus copias de seguridad al día. Durante el proceso, se descargarán nuevas versiones de muchos paquetes y tu ordenador se reiniciará, así que no hagas esto inmediatamente antes de algo importante que tengas que hacer.

En caso de que no estés utilizando el spin oficial de GNOME y no tengas acceso a la aplicación GNOME Software, podrás actualizar desde la línea de comandos, algo que también puedes hacer igualmente aunque uses la versión de GNOME.

Para ello, primero debes comprobar que tengas instalada DNF System Upgrade, un plugin para DNF que permite ocuparse del proceso de actualización de Fedora. Una vez lo tengas instalado, utiliza el comando que te propongo a continuación para actualizar a la versión que corresponda. Ten en cuenta que este comando te vale independientemente del spin de Fedora que estés usando, y también te vale incluso si estás usando Fedora 35 todavía, ya que no perderá soporte hasta un par de semanas después de la publicación de Fedora 37.

$ sudo dnf install dnf-plugin-system-upgrade
$ sudo dnf system-upgrade download --releasever=37

A continuación sólo queda seguir los pasos y responder a las preguntas que nos hará.

El proceso de instalación muestra un resumen y una confirmación antes de iniciar el proceso.

¿Qué pasa si estoy usando la beta?

No creo que sea la única persona que no ha podido evitar a echarle un vistazo a Fedora 37 usando el canal Beta. Si bien las versiones beta pueden ser inestables y pueden contener errores que todavía no están corregidas, te permiten a cambio obtener un vistazo sobre lo que se viene con la siguiente versión de Fedora.

En ese caso, tienes que entender que cuando estás usando una versión beta de Fedora 37, ya estás usando teécnicamente Fedora 37. El procedimiento de actualización para pasar de una beta a una versión final es mucho más simple. Cuando sale Fedora 37, se publica una actualización en el canal Beta que hace los cambios a DNF para pasar al canal estable, y automáticamente invalida el canal beta.

¿Esto qué quiere decir? Que te bastará con continuar instalando actualizaciones como siempre mediante el uso de GNOME Software o la aplicación equivalente en el spin de Fedora que estés usando, o bien simplemente ejecutando el comando sudo dnf update en tu terminal, como siempre.

La documentación oficial de Fedora recomienda igualmente hacer un distro-sync después de actualizar al canal Estable. Esto es porque a veces pueden ocurrir problemas con versiones de paquetes que no cuadran entre lo que hay instalado y lo que se ofrece en el canal estable de Fedora. Ejecutaríamos ese comando sudo dnf distro-sync, y con eso nos aseguramos de hacer downgrade de cualquier paquete extraño a la misma versión que se proporciona en el canal estable.

Cómo cambiar el tamaño de la swap de Linux

Cómo crear un archivo swap para poder cambiar su tamaño una vez que ya hemos formateado el ordenador.

La swap o espacio de intercambio es una zona de memoria extra en disco duro o disco SSD que el kernel Linux se reserva para aumentar la cantidad de memoria virtual disponible para asignar a las aplicaciones. De este modo, cuando un ordenador tiene muchas aplicaciones abiertas, el sistema operativo puede identificar qué zonas son las que menos se están usando en ese instante, y moverlas al disco duro como si fuese una mesa auxiliar en la que dejar lo que no se está usando en ese momento. Esto libera espacio en el chip para que otra aplicación más activa sí pueda utilizar la memoria.

Cuando se instala el sistema operativo, el asistente pregunta a la hora de particionar el disco duro cuánto se quiere asignar a la swap. Cuanto más espacio de swap haya disponible, más fluidez puede adquirir el ordenador porque más grande será la estantería donde el kernel puede depositar los datos en uso por parte de programas poco activos para liberar espacio en RAM para aquellos que sí están más activos. Al contrario, si la swap es limitada (o si prefieres no crer swap), puede ocurrir que se agoten del todo los recursos del sistema, un panorama que provocará que el ordenador funcione de manera poco fluida y que tal vez provoque que algunas aplicaciones se cierren a la fuerza a medida que el kernel cierra cosas para hacer espacio y evitar el colapso de la máquina.

¿Cuánta swap debería tener mi ordenador?

En otros tiempos, la limitación en cuanto a cantidad de memoria RAM del ordenador era un problema importante, que provocaba que existiesen fórmulas precisas tales como «la swap debería ser siempre el doble de grande que la memoria RAM disponible». Sin embargo, hoy en día los ordenadores tienen bastante memoria por lo que hay que tener en cuenta más factores.

Más que considerar «la swap siempre es necesaria» o «la swap ya nunca es necesaria», la respuesta correcta es: ¿qué tipo de cargas de trabajo va a tener mi ordenador? Para un ordenador doméstico que se use para cosas básicas, es probable que, efectivamente, si tienes suficiente memoria RAM no necesites tener una swap. Es espacio en disco duro que se desaprovecha si nunca se llena la memoria RAM. Sin embargo, si vas a estar continuamente ejecutando aplicaciones intensivas en memoria (tales como simulaciones, juegos o programas de edición de vídeo o, en general, programas complicados que ejecuten muchos algoritmos y que trabajen con muchos datos), es posible que incluso aun teniendo 16 o 32 GB de RAM sea recomendable establecer un espacio de intercambio, sobre todo si corres el riesgo de que uno de esos programas verdaderamente sea capaz de consumir toda la memoria RAM disponible.

Algunos fabricantes suelen recomendar sus propias fórmulas. En el caso de Red Hat, por ejemplo, recomiendan hoy en día lo siguiente:

  • Si tienes un ordenador de 2 GB de RAM o menos (como un ordenador viejo), deberías tener una swap que tenga el doble de la cantidad de memoria RAM que tu PC tenga.
  • Si tienes un ordenador de entre 2 y 8 GB de RAM, deberías tener una swap que tenga el mismo tamaño que la cantidad de memoria RAM que tu PC tenga.
  • Si tienes un ordenador de más de 8 GB de RAM, deberías tener una swap de al menos 4 GB en función de las circunstancias.

De nuevo, con la cantidad de memoria RAM que hay hoy en día y con el uso tan diferente que se puede hacer de un ordenador, conviene preguntarse qué se va a hacer con el ordenador, ya que eso puede influenciar que queramos darle una swap más pequeña o incluso no darle swap, sobre todo si es un PC con mucha memoria.

¿Qué hago si necesito más swap una vez he particionado mi PC?

Por lo general, el instalador ofrecerá la posibilidad de formatear una partición extra al instalar GNU/Linux de tipo swap. Con esto, se reserva una zona del disco duro para este propósito. Queda fuera del sistema de archivos principal, por lo que nunca verás la swap para que no moleste.

Si después de instalar el ordenador necesitamos cambiar su tamaño (por ejemplo, porque es un servidor web y nos hemos dado cuenta que en horas pico se queda corta la swap y provoca caídas de sistema), vamos a tener complicado particionar de nuevo.

Por suerte, es posible igualmente utilizar el comando swapon para activar un archivo de disco duro y que se comporte como espacio de intercambio. Para ello, lo primero que tendríamos que hacer es crear un archivo en blanco que tenga el tamaño deseado. Esto lo podemos hacer con dd, aunque yo hoy en día suelo utilizar el programa fallocate(1) porque es más rápido:

$ sudo fallocate -l 4G /swapfile

Esto crea un archivo de 4 GB llamado swapfile en la raíz del disco duro. Por supuesto, tú deberías cambiar ese 4G por el tamaño que quieras que tenga tu RAM, sustituyendo el 4 por la cantidad de gigas correcta, por ejemplo, 2G u 8G para, respectivamente, 2 GB u 8 GB.

Ahora lo que tenemos que hacer es formatear el archivo, es decir, configurarlo para que el kernel se piense que es un área swap normal y corriente. Esto lo podemos conseguir con el comando mkswap:

$ sudo mkswap /swapfile

Opcionalmente, si queremos deshacernos de otras particiones o archivos swap en uso, podríamos retirar toda la swap. Ten en cuenta que esto volcará su contenido en memoria RAM, así que no conviene correr este comando si el ordenador no está tranquilo.

$ sudo swapoff -a

Y finalmente pedirle al sistema que active este archivo que acabamos de crear como un archivo swap:

$ sudo swapon /swapfile

Si ahora usamos una herramienta como htop, deberíamos poder verificar que existe una swap del tamaño solicitado.

Cómo activar la carga de nuestro swapfile en cada arranque

Sorprendentemente, el archivo /etc/fstab también permite introducir rutas a swapfiles que haya en otra partición. De modo que es posible configurar el sistema operativo para que active este swapfile cada vez que se encienda el ordenador.

Para ello, todo lo que hay que hacer es modificar el archivo /etc/fstab como superusuario, y poner al final del archivo la siguiente línea:

/swapfile none swap defaults 0 0

Si el archivo se ha creado con otro nombre, habrá que cambiar la ruta que va al principio de la fila. A partir de ese momento, cuando se reinicie el ordenador debería cargarse automáticamente el swapfile que hemos creado.

¿Cómo instalaría WinRAR en GNU/Linux?

Esta es una de las preguntas más típicas para alguien que llega a GNU/Linux por primera vez. Voy a intentar aclarar un poco la confusión sobre GNU/Linux, archivos RAR y cómo extraerlos.

Lamentablemente, no puedes instalar WinRAR en GNU/Linux porque no existe versión de WinRAR para GNU/Linux. Sin embargo, es posible igualmente extraer de forma gratuita archivos .rar usando el programa unrar. En este artículo te cuento cómo.

Tienes que tener en cuenta, antes que nada, que el formato de archivos RAR es un formato propietario. Esto quiere decir que no es libre y abierto, y que la empresa detrás de WinRAR controla la creación de herramientas que interactúen con sus archivos. Esta es la razón por la que tan complicado es encontrar un software que simplemente extraiga archivos RAR: nadie se quiere meter en problemas con WinRAR.

Aunque puedes hacer lo que quieras, sería recomendable reemplazar los archivos .rar por otros formatos de archivos diferentes para comprimir, que no tengan restricciones tan severas, como .zip o .tar.gz. Con esto, es posible intercambiar más fácilmente archivos comprimidos porque no depende tanto de que las dos personas tengan la capacidad para extraer archivos .rar.

Cómo extraer archivos RAR en GNU/Linux con unrar

La mayoría de distribuciones GNU/Linux traen igualmente un programa en sus repositorios llamado unrar. Si bien WinRAR es un programa para Windows «de pago» (o al menos, trialware), su desarrollador ha tenido la delicadeza de proporcionar una versión gratuita (que no libre) para GNU/Linux que es capaz de descomprimir archivos.

Antes de instalarla, conviene que te plantees si la necesitas. Algunas distribuciones modernas, como Fedora, son capaces de extraer archivos RAR simplemente haciendo doble clic sobre ellos desde el explorador de archivos. Ya hemos hablado de esto alguna vez en esta web. Si lo único que necesitas es extraer un par de documentos, tal vez con esto te baste.

Si no eres capaz, vas a tener que instalar unrar desde el gestor de paquetes de tu distribución. Desde la terminal, tendrás que ejecutar el comando más oportuno para tu plataforma:

  • Ubuntu/Debian/derivados: sudo apt install unrar
  • Fedora/RHEL: sudo dnf install unrar-free
  • Arch o basadas en Arch: instala el paquete rar desde AUR.

Nota importante: si estás usando Debian, tendrás que activar los repositorios non-free, que no suelen venir activos por defecto. En Ubuntu, sí es posible instalarlos a la primera. Para Debian, también tienes como alternativa instalar unrar-free, aunque existen algunas diferencias en el funcionamiento que para algunos archivos RAR puede suponer que sea incapaz de extraerlo en primer lugar.

Una vez lo hayas instalado, ¿cómo se extrae un archivo RAR? Desde la misma terminal, deberás irte a la carpeta en la que está tu archivo RAR usando el comando cd, por ejemplo: cd /home/usuario/Descargas. A continuación, deberás utilizar el comando unrar con la opción x, que quiere decir extraer, y darle el nombre del archivo. Aquí un ejemplo completo:

# Me voy a la carpeta donde está mi archivo:
~ $ cd Descargas


# Ahora extraigo mi archivo RAR
~/Descargas $ unrar x Documentacion.rar
UNRAR 5.61 beta 1 freeware     Copyright (C) 1993-2018 Alexander Roshal
Extracting from Documentacion.rar

Extracting   Documento1.pdf
Extracting   Documento2.pdf
Extracting   Documento3.pdf
Extracting   Documento4.pdf
All OK


# Listo, ya están ahí mis archivos extraídos
~/Descargas $ ls
Documentacion.rar  Documento1.pdf  Documento2.pdf
Documento3.pdf     Documento4.pdf

Cómo extraer archivos .rar en Fedora 37 y 36

Todavía queda gente que sigue usando archivos RAR, por alguna razón. Si te ha llegado un archivo RAR, no te preocupes, en este post te cuento cómo extraerlos fácilmente si tu sistema operativo es Fedora.

La gente tiene derecho a evolucionar. Tal vez empezaste usando GNU/Linux en Ubuntu, luego te pasaste a Debian, y luego te pasaste a Fedora. La vida es un camino que vamos fabricando a medida que tomamos decisiones y vamos evolucionando nuestra forma de ser. Entonces, ¿por qué hay gente que en 2022 continúa enviando archivos comprimidos en formato .rar? Si te ha llegado uno de esos, no te preocupes, en este post te cuento cómo extraerlos fácilmente si tu sistema operativo es Fedora.

¿Lo prefieres hablado? Este post también está disponible como vídeo:

El principal problema del formato RAR es que no es abierto. Como tal, es un formato de archivos privativo y existen muchísimas restricciones en cuanto a la elaboración de programas que creen archivos RAR. Es por ello que, si como usuarios de GNU/Linux recibimos un archivo en formato RAR, vayamos a tener algún que otro quebradero de cabeza para encontrar una herramienta con la que abrirlo, debido a que por defecto no va a haber soporte para archivos RAR en la distribución.

En el caso de Fedora, el extractor de archivos de GNOME ya trae soporte para extraer archivos RAR. Dicho de otro modo, debería ser posible extraer un archivo RAR haciendo doble clic sobre el icono del archivo RAR dentro de la aplicación Archivos. En el caso de Fedora 36, se extraería en la misma carpeta en la que está el archivador.

Sin embargo, si estás leyendo esto, es posible que sea porque el paso anterior no te ha funcionado y buscas una resolución para poder abrir ese archivo RAR que se te resiste. También puede ser que busques una forma alternativa, por ejemplo para extraerlos sobre la línea de comandos en un servidor o porque prefieras usar una interfaz alternativa.

Fedora trae un programa llamado unrar-free en sus repositorios princpiales, que ofrece una línea de comandos de código abierto que permite extraer archivos RAR desde la línea de comandos. Para poder instalar unrar-free, deberás utilizar DNF o bien usar una herramienta auxiliar como DNFdragora.

sudo dnf install unrar-free
...
¿Está de acuerdo? [s/N]: s

Cuando se haya instalado, podrás utilizar la terminal para extraer con el comando unrar-free ese archivo RAR que se está resistiendo.

$ unrar Documentos.rar
unrar-free 0.1.1  Copyright (C) 2004 Ben Asselstine, Jeroen Dekkers

Extracting from /home/dani/Descargas/Documentos.rar
Extracting  Documento1.pdf     OK
Extracting  Documento2.pdf     OK
Extracting  Documento3.pdf     OK
All OK

Cómo instalar Docker en Debian 11 Bullseye

Docker es un software bastante popular presente hoy en día en muchos procesos de desarrollo de software y despliegue. Veamos cómo obtenerlo en workstations o servidores que ejecuten Debian 11.

Docker es un software bastante popular presente hoy en día en muchos procesos de desarrollo de software y despliegue. Su capacidad para ejecutar aplicaciones de forma aislada mediante contenedores lo ha convertido en un software vital en muchos servidores que, en los últimos años, han empezado a desplegar aplicaciones de forma «dockerizada» para ahorrarse el esfuerzo que supone instalar sobre el propio servidor todo el software necesario para ejecutar la aplicación.

También, gracias a la nube pública, hoy en día resulta habitual utilizar servicios donde en vez de administrar un servidor, tu proveedor cloud lo administra por ti y te ofrece directamente una forma de configurar y ejecutar contenedores de Docker desde su interfaz de usuario. A veces incluso como parte de un cluster de Kubernetes.

Instalar Docker en Debian 11 Bullseye

Si has pensado ingenuamente que podrías instalar Docker en Debian 11 usando apt install docker y has visto que no obtenías el resultado esperado, ya puedes ir pensando en desinstalar. Este paquete poco tiene que ver con el Docker que estás pensando.

Docker tiene una forma de «presentarse» bastante peculiar, por lo que antes de continuar tal vez sea conveniente contar las diferencias entre las distintas piezas de software que se hacen llamar «Docker».

  • Por un lado, Docker Engine es la parte principal del sistema de Docker. Contiene un demonio (dockerd) y una serie de aplicaciones de control (como el comando docker), y es lo que permite crear y ejecutar contenedores para lanzar aplicaciones de forma aislada, apoyándose en el sistema cgroups que forma parte del kernel Linux.
  • Por otro lado, Docker Desktop es un producto que cada vez más está siendo más promocionado por Docker Inc, la empresa que está detrás de Docker, que agrega una interfaz de usuario para controlar el Docker Engine y que facilita el proceso de instalación. Hay que entender que Docker Desktop no es de código abierto y que es un producto que al usarlo corporativamente en empresas más grandes podría ser de pago y requerir una licencia si no se cumplen los requisitos para tener acceso gratuito.

Si bien Docker Desktop hasta hace un tiempo era un producto exclusivo para los sistemas operativos Windows y MacOS, donde de todos modos es necesaria una máquina virtual que ejecute el kernel Linux para poder hacer uso del engine de Docker, ahora existe Docker Desktop para Linux, sujeto a los mismos términos de uso que sus hermanos para Windows y MacOS. Es por esta razón que en este post va a ser descartado como opción, y se va a hablar únicamente de Docker Engine.

Instalar Docker Engine desde los repositorios centrales de Debian

Debian 11 porta una versión de Docker Engine en sus repositorios principales, bullseye/main. Esta tal vez no sea la última versión de Docker disponible, pero es una versión relativamente reciente (la 20.11), que puede ser útil si no haces uso de las funciones más modernas de Docker.

Una de las ventajas de usar la versión de Docker Engine que hay en bullseye/main es que tu instalación de Docker tendrá más estabilidad, debido a que la política de actualizaciones de Debian congela las versiones de los paquetes y sólo proporciona correcciones de errores o de problemas de seguridad, así que puedes tener claro que tu instalación de Docker seguirá funcionando exactamente igual sin sorpresas todo el tiempo que Debian 11 continúe recibiendo soporte.

En cuanto a las desventajas: precisamente, que no vas a poder hacer uso de las funciones más recientes, que tal vez sólo estén disponibles en la versión de Docker Engine que distribuye Docker por su cuenta.

Para instalar Docker Engine desde los repositorios de Debian todo lo que tienes que hacer es ejecutar en una terminal con los permisos correspondientes

sudo apt install docker.io

El proceso de instalación incluye también la configuración de los demonios y de un grupo llamado docker. Si quieres poder utilizar Docker sin tener que escribir sudo, vas a tener que meter tu cuenta local habitual dentro del grupo docker, por ejemplo:

sudo /usr/sbin/usermod -aG docker [[tu usuario]]

Tratemos ahora de hacer una prueba para confirmar si se ha instalado bien o mal. Lanzamos un contenedor de la imagen hello-world, que es una imagen que se puede usar para depurar la instalación de Docker.

Resultado de ejecutar hello-world dentro de Docker

Si lejos de ver un mensaje de error, vemos que se ejecuta algo como lo logrado en la imagen, es que lo hemos hecho correctamente y que ya lo tenemos listo para utilizar. ¡Congratulaciones!

Instalar Docker Engine desde los repositorios de Docker

Si en su lugar nos interesase optar por una versión más reciente del engine, podemos agregar el repositorio oficial de Docker a nuestro sistema APT, e instalar Docker a través de ahí. Las instrucciones las tienes en su documentación oficial, pero consistirá en dar los siguientes pasos.

Primero instalaremos las dependencias necesarias para poder dar de alta la clave GPG que firma los paquetes que distribuye Docker en su repositorio oficial para Debian:

sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

Después, utilizaremos el siguiente comando para descargar e instalar la clave GPG de Docker:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Para a continuación dar de alta el repositorio en el sistema.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Finalmente, actualizaremos los paquetes de nuevo, e instalaremos Docker Engine:

sudo apt update 
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Por último, validaremos de forma parecida a lo dicho en la sección anterior, que podemos ejecutar un contenedor de la imagen hello-world sin errores, y opcionalmente introduciremos a nuestro usuario principal en el grupo docker si pretendemos invocar comandos de Docker sin utilizar sudo.

Cómo probar ya las nuevas Web Extensions de GNOME Web con Nightly

Con la ayuda de Flatpak podemos activar el repositorio de GNOME Nightly y así probar la versión no estable más reciente de GNOME Web, por si no quieres esperar a GNOME 43 este otoño.

La próxima versión de GNOME Web dispondrá de soporte para WebExtensions, el formato interoperable de extensiones web que hoy en día utilizan los navegadores principales (Firefox, Chrome, Microsoft Edge…). Esto abre una nueva era en las capacidades de GNOME Web, ya que a partir de entonces podrás utilizar en GNOME Web extensiones populares como uBlock, Bitwarden o Decentraleyes. Si no te apetece esperar a la inminente llegada en otoño de GNOME 43, siempre puedes probarlo ya desde la versión Nightly, que es el sistema de distribución de GNOME para versiones inestables de su software.

Con versión inestable no me refiero necesariamente a que vaya a fallar o a dar problemas, pero tampoco quiero dar a entender que son versiones que vayan a funcionar bien todo el tiempo. En realidad nunca se sabe cómo puede funcionar una versión nightly, y esta percepción puede cambiar cada día, ya que se actualizan constantemente. Una parte muy importante cuando se fabrica software es la etapa de validación y pruebas, midiendo que el software se comporte como cabe esperar sin errores ni incompatibilidades. El software que está disponible en la rama Nightly de GNOME acaba de ser desarrollado, pero su etapa de pruebas todavía no se ha completado, por lo que podría dar problemas que todavía no hayan sido detectados ni reparados. Deberías probarlo solamente bajo tu propio riesgo y sin hacer actividades importantes en este navegador si lo no ves robusto en este momento.

GNOME Nightly se distribuye en formato Flatpak. Es lo más conveniente para poder instalar de forma aislada todos los entornos de ejecución de la próxima versión de GNOME, de una forma que no sea global para evitar comprometer el resto del equipo. Instalar paquetes de GNOME Nightly desde Flatpak no va a perjudicar en absoluto ningún otro paquete que tengas descargado, ni ningún otro Flatpak que hayas instalado. De hecho, podrás instalar en paralelo la versión Nightly y la versión normal.

Para poder activar GNOME Nightly, tal como dicen sus instrucciones de instalación, tendrás que activar el repositorio remoto en primer lugar. Para ello, primero te tienes que asegurar de haber instalado Flatpak. Según tu distribución es posible que ya lo tengas instalado, pero a lo mejor tienes que configurarlo antes. Hace poco te contaba en YouTube cómo instalar Flatpak en Debian 11. En mi caso, voy a hacer esta prueba sobre Fedora 36, de modo que ya tengo Flatpak preinstalado, solo me hace falta ejecutar el comando:

flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo

Si no dice nada más, es que hemos terminado de instalar el repositorio. Esto lo puedes confirmar ejecutando flatpak remotes y confirmando que puedes ver una entrada para gnome-nightly. De ser así, ya puedes instalar GNOME Web Nightly usando el comando:

flatpak install gnome-nightly org.gnome.Epiphany.Devel

Al hacer esto, te mostrará todo el camino de instalación que debe tomar, y te hará una serie de preguntas a las que deberás responder afirmativamente según el idioma en el que te haga la pregunta, respondiendo Y o respondiendo S. El nombre con el que encontrarás GNOME Web Nightly en tu menú Aplicaciones una vez instalado es Web (Epiphany Technology Preview).

Captura de pantalla
Flatpak pidiendo confirmación antes de instalar GNOME Web Nightly (nombre en clave Epiphany).

Debido a que el soporte para Web Extensions apenas acaba de aterrizar, la forma de utilizarlas todavía no es lo mejor del mundo. Todavía no hay nada para instalar visualmente extensiones a partir de una lista. Quiero imaginar que en un futuro no muy distante, las extensiones se podrán obtener desde GNOME Software o desde algún tipo de panel en las opciones de GNOME Web. Por el momento, habrá que activar a mano el soporte para Web Extensions invocando un comando en la terminal, ejecutando los siguientes tres comandos:

flatpak run --command=gsettings org.gnome.Epiphany.Devel set org.gnome.Epiphany.web:/org/gnome/epiphany/web/ enable-webextensions true

mkdir -p ~/.var/app/org.gnome.Epiphany.Devel/config/epiphany/web_extensions/

mkdir -p ~/.var/app/org.gnome.Epiphany.Devel/data/epiphany/web_extensions/

El soporte estará limitado a las extensiones compatibles en formato manifest.json o en formato XPI. Se pueden descargar extensiones desde el web de Firefox Add-Ons, porque desde un navegador web que no sea Firefox, mostrará un enlace llamado Descargar archivo que será el que permita descargar la extensión en formato XPI. A partir de ahí, se pueden organizar e instalar extensiones nuevas en GNOME Web desde el menú lateral, entrando en la sección Extensiones.

Una extensión siendo instalada en GNOME Web Nightly.