Desde la versión 22.04 de Ubuntu la instalación de algunos paquetes no es posible hacerlo desde APT -por ejemplo Firefox- y te obliga hacerlo en su nuevo sistema de paquetes llamado SNAP.

Snap es un sistema de gestión de paquetes y una tecnología de empaquetado desarrollada por Canonical, la compañía detrás de Ubuntu. Los snaps son paquetes de software que incluyen sus dependencias, lo que les permite funcionar consistentemente en diferentes distribuciones y versiones de Linux.

Recientemente he descubierto que no me funcionan ciertas cosas concretas en algunos programas debido a que la instalación del programa se hizo a través de SNAP. Así que he decidido hacer un artículo sobre como eliminar Snap para siempre de nuestras vidas.

¿Por qué eliminar Snap de Ubuntu?

Para los más perros viejos que leen este artículo, se acordarán cuando systemd fue lanzado en 2010. Con el tiempo comenzó a reemplazar los sistemas init por defecto en varias distribuciones. El tema estaba bastante caldeado y había opiniones de todo tipo. Tanto systemd como snap son de código abierto. Sin embargo, el snapd (el demonio de snap) está programado para usar los servidores de Canonical para obtener los snaps y todos los metadatos asociados. El código para los servidores backend de snapd no es de código abierto.

No hace mucho tiempo, Canonical intentó convencer a muchos de nosotros de usar su entorno de escritorio Unity. No era muy aficionado a Unity, por entonces estaba encantado con KDE y no me interesaba mucho. Pero si que creo que podía ser útil para mucha gente. Así que creo que no siento que me pierda mucho al no usar SNAP, de la misma forma que no usé nunca Unity.

Creo que Canonical está haciendo un trabajo estupendo, especialmente por la parte de servidor y el enfoque que le está dando al Linux Empresarial. Pero creo que hace mucho tiempo que se ha olvidado de los usuarios y sólo traen problemas.

Es cierto que Snap tiene muchas ventajas, pero ¿superan a las desventajas? Puede que no importe porque parece que snap ha llegado para quedarse.

Antes de entrar a la acción: Una cosa importante a tener en cuenta

Para asegurarte de que tomes una decisión informada, aquí está la respuesta de un miembro del equipo de Canonical sobre los efectos de eliminar Snap, específicamente de Ubuntu 22.04 LTS:

Texto en Inglés

To ensure that you make an informed decision, here is the response from a Canonical team member on the effects of removing Snap. Specifically from Ubuntu 22.04 LTS:

“You will lose access to any software installed via a snap package. Snap software is “containerized” (to varying extents depending on the install mode and permissions) so you would lose access to “snap” containerized software specifically. There are other ways to run containerized software you wouldn’t necessarily lose access to, though are not installed or used by default and that can also be used at the same time as snap packages (e.g. flatpak, docker, etc.).

There is some software installed by default on 22.04 by Snap that has no Ubuntu-provided alternative “deb” package. This includes Firefox and the “Ubuntu Software” store app (installed by default) and LXD (not installed by default, but if you want to use it, there is no deb package). If you’re not using any such snap software, it may not matter. In some cases, you may be able to install software through some other non-snap method from a non-Ubuntu source (e.g. you may be able to install Firefox using the standard Linux installer, though I have not tried that).

With regards to the Ubuntu live kernel update feature, this is powered by the ‘canonical-livepatch’ snap. When you run “ua enable livepatch” it installs the Snap. Without Snap, it won’t work, hence you won’t get live patches. Livepatches are not automatically enabled by default for a standard install on your own hardware, you need to attach it to your ubuntu account with “ua attach” and then “ua enable livepatch” (it’s free for 3 personal machines and requires a paid subscription otherwise). You can read more about that at https://ubuntu.com/security/livepatch. The snap package is the only canonical-livepatch client package hence if you removed snapd you would lose access to use livepatches.”

Texto en Castellano (traducido)

Perderás acceso a cualquier software instalado mediante un paquete snap. El software snap está 'contenedorizado' (hasta cierto punto dependiendo del modo de instalación y los permisos) por lo que perderías acceso específicamente al software contenedorizado por 'snap'. Hay otras formas de ejecutar software contenedorizado a las que no necesariamente perderías acceso, aunque no están instaladas ni se usan por defecto y que también pueden ser utilizadas al mismo tiempo que los paquetes snap (por ejemplo, flatpak, docker, etc.).

Hay algo de software instalado por defecto en 22.04 mediante Snap que no tiene un paquete 'deb' alternativo proporcionado por Ubuntu. Esto incluye a Firefox y la aplicación de la tienda "Ubuntu Software" (instalada por defecto) y LXD (no instalado por defecto, pero si quieres usarlo, no hay un paquete deb). Si no estás utilizando tal software snap, puede que no importe. En algunos casos, podrías ser capaz de instalar software mediante algún otro método no-snap de una fuente no-Ubuntu (por ejemplo, podrías instalar Firefox usando el instalador estándar de Linux, aunque no he probado eso).

En cuanto a la característica de actualización en vivo del kernel de Ubuntu, esta es potenciada por el snap 'canonical-livepatch'. Cuando ejecutas "ua enable livepatch" instala el Snap. Sin Snap, no funcionará, por lo tanto, no recibirás parches en vivo. Los livepatches no están habilitados automáticamente por defecto para una instalación estándar en tu propio hardware, necesitas adjuntarlo a tu cuenta de ubuntu con "ua attach" y luego "ua enable livepatch" (es gratis para 3 máquinas personales y requiere una suscripción de pago de lo contrario). Puedes leer más sobre eso en https://ubuntu.com/security/livepatch. El paquete snap es el único paquete cliente de canonical-livepatch por lo que si eliminaste snapd perderías el acceso al uso de livepatches.

Cómo eliminar snap de Ubuntu 22.04

Es un proceso largo, sobretodo si tienes muchos snaps instalados, por lo que lo primero que haremos será listar los snaps. Esto es un ejemplo de lo que tengo instalado -o se ha instalado por vete tu saber que motivo-.

snap list 
Name                            Version                     Rev    Tracking         Publisher      Notes
bare                            1.0                         5      latest/stable    canonical✓     base
core                            16-2.60.4                   16202  latest/stable    canonical✓     core
core18                          20230901                    2796   latest/stable    canonical✓     base
core20                          20230801                    2015   latest/stable    canonical✓     base
core22                          20230801                    864    latest/stable    canonical✓     base
firefox                         119.0-2                     3290   latest/stable/…  mozilla✓       -
gnome-3-28-1804                 3.28.0-19-g98f9e67.98f9e67  198    latest/stable    canonical✓     -
gnome-3-38-2004                 0+git.efb213a               143    latest/stable/…  canonical✓     -
gnome-42-2204                   0+git.ff35a85               141    latest/stable    canonical✓     -
gtk-common-themes               0.1-81-g442e511             1535   latest/stable/…  canonical✓     -
hunspell-dictionaries-1-7-2004  1.7-20.04+pkg-6fd6          2      latest/stable    brlin          -
minetest                        5.7.0                       1864   latest/stable    snapcrafters✪  -
snapd                           2.60.4                      20290  latest/stable    canonical✓     snapd
taskbook                        0.3.0                       23     latest/stable    klaudiosinani  -

Bien, lo primero será parar todos los servicios de SystemD que involucran a snapd:

systemctl disable snapd.service
systemctl disable snapd.socket
systemctl disable snapd.seeded.service

Una vez hemos identificado que tenemos instalado, se tiene que desinstalar todo, pero en un orden concreto, ya que si marcamos todos los paquetes podemos obtener este error:

snap remove gnome-3-28-1804 gnome-3-38-2004 gnome-42-2204 gtk-common-themes hunspell-dictionaries-1-7-2004 minetest taskbook snapd
error: cannot remove "gnome-3-28-1804", "gnome-3-38-2004", "gnome-42-2204", "gtk-common-themes",
       "hunspell-dictionaries-1-7-2004", "minetest", "taskbook", "snapd": snap "snapd" is not
       removable: remove all other snaps first

Básicamente, te dice que para eliminar gnome-3-28-1804 primero tienes que eliminar otros paquetes que dependen de él.

Mi procedimiento ha sido este:

snap remove minetest taskbook hunspell-dictionaries-1-7-2004
snap remove gtk-common-themes
snap remove gnome-42-2204 gnome-3-38-2004 gnome-3-28-1804
snap remove core18 core20
snap remove bare
snap remove firefox
snap remove core22
snap remove core
🚨
Tened en cuenta que si elimináis Firefox, la carpeta personal del usuario donde se guardan las extensiones, datos de navegación, etc se eliminará también. Por lo que es aconsejable utilizar Firefox Sync para sincronizar todos esos datos o bien hacer una copia del directorio.

Tras eliminar todas las aplicaciones, procedemos a eliminar el directorio de cache:

rm -rf /var/cache/snapd/

Purgamos el paquete snapd para eliminarlo de nuestro sistema:

apt autoremove --purge snapd

Finalmente, eliminamos el directorio generado en nuestra home con algunas configuraciones:

rm -rf ~/snap

De que me he librado

Totalmente fuera de tema esto que vas a leer a continuación, pero antes de eliminar snap de mi sistema, el directorio /var/ estaba casi al 100% de uso:

/dev/mapper/SISTEMA-var      9,8G  9,0G   267M  98% /var

Tras eliminar snap de mi ordenador:

/dev/mapper/SISTEMA-var      9,8G  3,2G   6,1G  35% /var

Casi 6GB de espacio menos!!

¿Y que hacemos ahora?

Si bien es cierto que hemos eliminado algunas aplicaciones que queremos utilizar, por ejemplo en mi caso Firefox, si intentamos instalar Firefox ahora, nos instalará como dependencia Snap.

Como que no queremos esto, lo que haremos será meter el repositorio oficial de Firefox con APT. Lo primero será crear una configuración extra para que no use el paquete por defecto en los repositorios de Ubuntu.

nano /etc/apt/preferences.d/firefox-no-snap

Con el siguiente contenido:

Package: firefox*
Pin: release o=Ubuntu*
Pin-Priority: -1

Ahora añadimos el repositorio de Mozilla:

add-apt-repository ppa:mozillateam/ppa

Actualizamos repositorios e instalamos el paquete:

apt update
apt install firefox

Y listo, ya tenemos nuestro Ubuntu libre de Snaps!

Actualización 29/01/2023:

Instalar Firefox en Ubuntu y derivadas con el nuevo repositorio de Mozilla
Recientemente desde Mozilla se han estado quejando de los lanzamientos lentos por parte de snap donde Canonical es la encargada de sacarlos.
Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación