Paquetes flatpak y snap: las dependencias de las que nadie habla. Porque sí tienen algunas
En Linux hay muchas maneras de instalar un mismo software. Es algo de lo que ha llegado a quejarse Linus Torvalds, y desde 2015 aproximadamente hay al menos dos opciones más: los paquetes flatpak y los snap. Uno de los reclamos que podemos encontrar en ambos casos es que incluyen software principal y dependencias en un mismo paquete, lo que les hace funcionar desde un principio, son más limpios y esas cosas, pero esto es una verdad a medias.
Supongamos que no usamos ningún paquete flatpak y queremos instalar sólo uno porque lo necesitamos. Lo que veis en la captura de cabecera es justamente el tercero en discordia, más concretamente una aplicación llamada Immagini con la que podremos crear AppImages, ese tipo de app portable que se puede ejecutar, en teoría, en cualquier distribución Linux si la arquitectura es compatible. Immagini tiene un peso de 22,4mb, pero para poder instalarla necesitamos… 1325MB de espacio. ¿Cómo?
Dependencias compartidas, pero dependencias al fin y al cabo
Lo que me lleva a escribir sobre esto es en parte las conversaciones que tuve con un usuario hace tiempo, nuevo en Linux, sobre qué tipo de instalación era la mejor. Mi respuesta al final fue lo de siempre, algo así como lo que mejor se adapte a tus necesidades, pero él dudaba sobre el peso de las aplicaciones. Estaba confundiendo el del software principal con el peso total si necesita alguna dependencia, que por lo general las necesita. Pero no son dependencias como las de los repositorios oficiales.
Por ejemplo, cuando queremos instalar un programa que convierte archivos multimedia a otros formatos, si no lo tenemos ya es probable que nos descargue FFmpeg e ImageMagick, cada uno con unas cuantas dependencias más. Estas sí son dependencias al uso, pero las que se instalan junto a un paquete flatpak o snap son lo necesario para que se pueda ejecutar ese programa en nuestra plataforma. Si la aplicación está escrita en GTK o tiene componentes de GNOME, nos instalará la plataforma de GNOME y sus traducciones. Cuando instalemos otro programa GTK/GNOME, esto ya lo tendremos, por lo que no será necesario y el peso de la app ya será el que vemos en las tiendas de software.
En el caso de los paquetes Snap tenemos un poco lo mismo. Hace unos instantes me he dado cuenta de que tenía instalado el paquete snap de KDE Frameworks 5.98. Sinceramente, no sé por qué, pero probablemente porque hice alguna prueba con algún snap que dependiera de Frameworks 5.98.
Vigilando las dependencias de los flatpak y snap
Controlar los paquetes flatpak que tenemos de más es más sencillo, puesto que hay varios comandos para eliminar lo que no está siendo usado. Los datos y cache de la aplicación suelen estar almacenados en ~/.var/app, y se pueden eliminar perfectamente a mano porque está dentro de nuestra carpeta personal y sin protección, algo así como lo que hay dentro de .config. Si queremos eliminarlo con el terminal, tendremos que usar este comando:
flatpak uninstall --delete-data
Para eliminar las dependencias de un paquete, que para usar el nombre correcto deberíamos decir «runtimes», el comando sería:
flatpak uninstall --unused
Si lo que queremos es eliminarlo todo, deberemos escribir:
flatpak uninstall --all
Yo el último no lo he usado nunca, en parte porque está diseñado como medio para restablecer todo lo relacionado a flatpak. Se podrá volver a instalar un paquete flatpak, pero empezaremos de cero. Es para hacer una limpieza general.
En cuanto a los paquete snap, no hay nada parecido, o por lo menos no lo conozco. Cuando instalamos una aplicación, ésta aparece dentro de la carpeta snap. Si eliminamos el paquete, su contenido desaparece, pero sus archivos de configuración no, y pueden estar en .config, .caché o en otra carpeta. Los runtimes o dependencias, junto a los paquetes, suelen estar en /var/snap/ o /var/lib/snapd, pero hay que tener cuidado con lo que tocamos aquí. Mi recomendación sería tirar de tienda de software, y si tiene un apartado para ello, ir a la pestaña de snaps instalados. Si vemos algo que sabemos que no estamos usando, eliminarlo desde ahí.
También podemos escribir snap list
, encontrar lo que sepamos que no estamos usando y eliminarlo con snap remove "paquete"
.
Terminando con algo positivo
Aunque hay que saber que existen, y en ocasiones se nos pueden poner los pelos de punta viendo lo que puede ocupar una aplicación al instalarla, no todo es malo. Cuando empecé a usar Linux, el que me enseñó lo primero que aprendí me decía que las aplicaciones de Linux pesaban muy poco, y eso era gracias a que existe software y dependencias que se comparten con otros programas. Esto es perfectamente aplicable a los paquetes flatpak y snap: si no existieran estas dependencias, cada nuevo paquete que las necesitara debería incluirlas en él mismo, por lo que las aplicaciones podrían ser muy pesadas. Tal y como están las cosas, las únicas pesadas serán las primeras; las siguientes ya no tendrán que descargar nada extra.
Era algo que había que explicar, y la toma de decisiones siempre es mejor cuando se está informado.