En el mundo de las distribuciones Linux hay un movimiento de fondo importante, y que hasta la fecha no le he dado suficiente importancia. La he dejado pasar. Me refiero a los sistemas de paquetes autocontenidos y en particular a los paquetes snap.
Si no sabes lo que son los paquetes snap, lee un poco mas, porque seguro que te va a interesar, porque te afecta. Te va a ayudar a hacerte la vida mas fácil en el mundo Linux.
Que son los paquetes snap
Sobre las dependencias
Seguro que te ha pasado que estás utilizando una aplicación, y al cambiar de versión de Ubuntu, esta aplicación deja de funcionar, o que ni siquiera la puedas instalar. ¿A que se debe esto? A las dependencias. Las malditas dependencias.
Esto sucede, porque con los cambios de versiones en Ubuntu, se incorporan nuevas versiones de librerías, que es posible que no sean compatibles con esa aplicación.
Lo que normalmente hacen los desarrolladores es aprovechar las librerías que llevan las distribuciones, con dos objetivos; por un lado para implementar aplicaciones mas rápido, y por el otro para que las aplicaciones no tengan un peso o tamaño excesivo.
El asunto es que actualmente, si una aplicación ocupa algo mas, no es muy relevante, incluso cuando ese algo mas es mucho mas. Actualmente, tu ordenador seguro que tiene 100 MB, y eso tirando por lo bajo. Lo normal es que esté del orden de 1 TB. Entonces, ¿que importa si una aplicación ocupa algunos MB de mas, si a cambio funciona seguro?.
Llegados a este punto, mas o menos, intuirás por donde van los tiros. Y es que los paquetes snap son paquetes que contienen todas las dependencias que necesitan para funcionar correctamente. Así, no te tienes que preocupar de que le falta una dependencia o que la dependencia que necesita está obsoleta.
Características de los paquetes snap
Los paquetes snap tienen una serie de características que los hacen realmente interesantes. A destacar,
- Los paquetes snap son más rápidos de instalar, más fáciles de crear y mas seguros desde el punto de vista de la ejecución. Se actualizan de forma automática, de forma que la aplicación que contienen esos paquetes snap siempre está actualizada.
- Los paquetes snap, funcionan en cualquier distribución y dispositivo. Desde el internet de las cosas, a servidores, ordenadores de sobremesa y dispositivos móviles. Evidentemente es necesario que la distribución en cuestión lo soporte.
Profundizando en los paquetes snap
Los paquetes snap son sistemas de archivos comprimidos de solo lectura squasFS, que contienen el código de tu aplicación y un archivo snap.yaml que contiene información específica del paquete. Se trata de sistemas de archivos de solo lectura, que una vez instalados disponen de un área que se puede escribir.
Se trata de paquete autocontenido. Esto quiere decir que lleva la mayor parte de las librerías que necesita para su funcionamiento. Estos paquetes pueden ser actualizados sin que esto afecte al resto del sistema.
Otro aspecto interesante de los paquetes snap es que están confinados. Es decir, la interacción con el sistema operativo o con otras aplicaciones, se hace a través de políticas y permisos controlados por el usuario.
Tiendas de paquetes snap
Existen diferentes maneras de distribuir paquetes snap, y no están asociadas a una distribución concreta.
Sin embargo, la forma principal para distribuir paquetes snap es desde el Ubuntu Store. Allí, cualquier desarrollador puede personalizar los datos e información de sus paquetes snap.
Mientras que para los usuarios, la forma mas sencilla de encontrar un snap es desde el uApp Explorer.
En el momento de escribir este artículo había disponible 755 paquetes snap. Pocos snap desde mi punto de vista. Todavía hay mucho trabajo por hacer, si se quiere que los paquetes snap tengan futuro.
Desde el explorador de aplicaciones uApp explorer, puedes buscar cualquier snap. La búsqueda la puedes hacer por,
- categoría (educación, entretenimiento, productividad, etc)
- tipo de snap (apps, aplicaciones web, etc)
Y puedes ordenar estos snaps por la fecha de creación, fecha de actualización, popularidad, etc)
Por ejemplo, si queremos instalar Telegram, una buena solución es hacerlo a través de un snap. Si buscamos dentro de uApp Explorer, lo que no encontraremos será lo siquiente,
En particular si entramos en telegram-sergiusens, veremos lo siguiente,
Aquí encontrarás algunos detalles interesantes. En primer lugar nos encontramos con la descripción, que nos da una mínima información sobre el snap que vamos a instalar.
Lo siguiente a destacar son los permisos, o interfaces. Las interfaces, permite a los snaps comunicarse entre sí o compartir recursos conforme al protocolo establecido por la interfaz en cuestión.
Por ejemplo, cuando un snap utiliza la cámara, debe declarar que requiere la interfaz camera. Así, en la otra parte de la conexión, el núcleo snap proporciona acceso a la cámara. Cuando el interfaz está conectada, el snap tiene acceso de lectura a /dev/video*.
Como te puedes imaginar, varios snap se pueden conectar a un mismo slot. Por ejemplo todas las aplicaciones que necesitan acceso a la red, deben declarar la interfaz network.
Así, en la snap que he puesto como ejemplo, verás las diferentes interfaces utilizadas,
- Unity7
- Network
- Network Bind
- Home
- Pulseaudio
Otras tiendas
Tal y como he comentado anteriormente, los snaps no están unidos a una distribución, y tampoco están unidos a unta tienda. Es mas tu puedes crear tu propia tienda donde guardar y proporcionar tus snaps.
Conclusiones
Los paquetes snaps me parecen una solución estupenda y revolucionaria. Una forma sencilla de olvidarnos de dependencias, y conseguir instalar cualquier aplicación con independencia de la distribución que hayamos elegido.
Sin embargo, y como has podido ver, el problema mas grave al que nos enfrentamos actualmente son los pocos paquetes snap disponibles. Un verdadero problema. Esperemos que este problema se solucione pronto…
Más información
Y son la futura paquetería de Ubuntu Phone 😛
La verdad yo no les dí mucha importancia hasta hace poco, que quise/necesité instalar 3 aplicaciones clave: nextcloud, rocket.chat y wekan.
Ahí la diferencia es abismal:
– Tener que instalar la última versión de node.js, mongodb (que no está en repos) y unas cuantas cosas más. Enlazar todas ellas correctamente y rezar para que todo funcione.
– O un simple snap install y a correr. Esto es imbatible.
¡Ah! Y otra grandísima ventaja, los snaps se actualizan solos, sin intervención (si casca el update, revierten solos también), por lo que es instalarlos y olvidarte de mantenerlos. El sueño de cualquier administrador 🙂
Un abrazo Lorenzo.
Es una solución espectacular. Yo estoy probando de crear el primer snap de una de las aplicaciones que desarrollé para Ubuntu. En cuanto lo tenga caerá el tercer artículo de las serie…. Brutal
Un abrazo Marcos
Realmente para app aisladas muy bueno. En un ecosistema donde varias app usan otras app y servicios (varias app que se subscriben a un redis, varias que leen de un indflux,,…) es una locura el consumo de RAM y CPU.
AppImage, es mas para uso local que para servir aplicaciones.