Snapcraft es nuestra deliciosa herramienta para crear instantáneas. No es el solamente forma de construirlos, pero sin duda es una popular uno.
Una ventaja de Snapcraft es que normalmente un desarrollador puede configurar la definición de empaquetado una vez y no tener que actualizarlo durante mucho tiempo. Snapcraft seguirá produciendo lanzamientos, a través de CI u otro sistema de compilación.
Sin embargo, el software sigue adelante. Vale la pena volver a visitar las instantáneas que se desarrollaron y publicaron hace un tiempo, para ver qué mejoras se pueden incorporar. Echemos un vistazo a una actualización que puede reportar beneficios.
Al principio
Snapcraft se concibió y construyó originalmente alrededor de Ubuntu 15.04 y se estableció durante la época de Ubuntu 16.04 LTS (Soporte a largo plazo). En el momento de la compilación, se hacen algunas suposiciones de que el software se compilaría en un sistema Ubuntu 16.04 LTS. En tiempo de ejecución, el complemento del núcleo se aprovecharía como una base ajustada sobre la que ejecutar.
Cuando se lanzó Ubuntu 18.04 LTS, un core18 más nuevo base se publicó y la palabra clave base se introdujo en la sintaxis snapcraft.yaml. Los editores de Snap ahora pueden especificar lo siguiente en su yaml:
base: core18
Continuando para arriba
Snapcraft se ha actualizado y mejorado a lo largo de los años. Algunos editores de snap todavía están usando la rama funcional, pero heredada, de Snapcraft 2.x para construir. Todas las mejoras recientes se han producido en la nueva rama 3.x de Snapcraft.
Esto le indicó a Snapcraft que usara un contenedor Ubuntu 18.04 LTS o una máquina virtual (VM), para apuntar a un entorno de tiempo de ejecución core18 en la instalación del paquete. Además, ahora hay una base core20, que se construye a partir de Ubuntu 20.04 LTS.
En términos generales, hay dos efectos secundarios principales de agregar este parámetro base a snapcraft.yaml. Primero, en el momento de la compilación, un editor tendrá acceso a los paquetes más nuevos del archivo Ubuntu 18.04 LTS. Eso incluye compiladores y bibliotecas más nuevos, junto con todos los demás paquetes actualizados y nuevos, que vienen con una versión actualizada de Ubuntu.
En segundo lugar, especificar la base cambiará Snapcraft a la ruta de código no heredada más nueva. Una tonelada de nuevo caracteristicas han llegado a Snapcraft desde que aterrizó 3.x (y por lo tanto, la palabra clave base).
Esto incluye nuevos métodos para usar Multipass o LXD para construir en VM y contenedores. Además, agrega el modo –destructivo a Snapcraft, que es útil en sistemas de CI efímeros y donde no se desean VM y contenedores anidados.
Para los desarrolladores que empaquetan software de escritorio, las versiones más recientes de Snapcraft también incluyen extensiones. Esto hace que snapcraft.yaml sea más pequeño y simple, eliminando algunas de las conjeturas al empaquetar aplicaciones gráficas de escritorio. También incluyen optimizaciones para mejorar la velocidad de inicio y reducir drásticamente el tamaño de la instantánea resultante.
En algunos casos, migrar al nuevo código base de Snapcraft es tan simple como agregar la línea base: core18 o base: core20 en snapcraft.yaml. Sin embargo, ha habido algunos cambios en la sintaxis de yaml y algunas características han cambiado el comportamiento. Por lo tanto, puede llevar un poco más de tiempo y cambios en yaml para actualizar de manera efectiva la base.
Actualizaciones en profundidad
La próxima semana haremos un seguimiento con un análisis más detallado de todas las nuevas funciones y actualizaciones de las que los editores deben ocuparse durante la migración. Mientras tanto, eche un vistazo a esta publicación de blog personal que escribí: «Actualización de Snap Bases”Destacando un ejemplo simple y más antecedentes sobre el razonamiento.
Foto por Tim Gouw en Unsplash