Noticias

¡Cariño, encogí el chasquido!

Es el año 1989. Compré un recreo de computadora llamado F-16: Combat Pilot, un simulador de planeo con planeo atrevido, cinco tipos de misiones para un participante, un modo de campaña completa, multijugador de puerto serial y más. Apoteósicamente envuelto en cuatro colores y magnetizado en dos disquetes de densidad única de 5,25 pulgadas. Tamaño total: 680 KB.

Hoy en día, no es raro que las aplicaciones individuales pesen decenas, si no cientos, de megabytes. Pero no tiene por qué ser así. En Linux, puede dosificar poco de espacio mediante el uso de bibliotecas que se comparten entre múltiples aplicaciones (de ahí su nombre, bibliotecas compartidas). Cuando se negociación de formatos de aplicaciones autónomos como snaps, las cosas se cambian una vez más, ya que los snaps agrupan todas las dependencias necesarias en su interior y, por lo tanto, ocupan más espacio en el disco. Si desea que sus aplicaciones instantáneas sean lo más pequeñas y esbeltas posible, tenemos algunas sugerencias interesantes.

Instantáneas y extensiones de contenido

Los Snaps pueden agrupar todas las dependencias necesarias para que se ejecute una aplicación, pero no es necesario. De hecho, si tiene varias aplicaciones que usan las mismas bibliotecas, puede crear un complemento de contenido y luego hacer que lo declare para su uso en el archivo snapcraft.yaml usando la interfaz de contenido. De esta forma, puede minimizar el uso de código en múltiples aplicaciones mientras sigue usando el mecanismo de contención de instantáneas.

Mejor aún, puede usar extensiones, un situación diseñado para hacer que el uso de snap sea más consistente, más rápido y más liviana. Hablamos de extensiones el año pasado, con la extensión de KDE como ejemplo. Del mismo modo, hay varias otras extensiones compatibles, incluidas GNOME, ROS y Flutter.

Encima de hacer que las instantáneas se comporten de una forma más predecible, las extensiones lo ayudan a cobrar, o más aceptablemente a perder, tamaño.

apps:
  kcalc:
    extension:
      - kde-neon
    command: kcalc
...

Por ejemplo, el complemento KCalc de KDE, que normalmente pesa aproximadamente de 100 MB como aplicación independiente, tiene un tamaño muy pequeño y arreglado de 972 KB, una reducción del 99% del objetivo flamante y un número que vale la pena la secuencia de los juegos de la plazo de 1980. Por supuesto, las bibliotecas necesarias aún deben existir en algún extensión, y están contenidas en el complemento de marcos de KDE, que se usa para todas las aplicaciones de KDE.

El otro beneficio importante de las extensiones es que lo más probable es que todavía ganes en el rendimiento de inicio de la aplicación, como hemos descrito en nuestro artículo de resolución de problemas de Chromium de finales del año pasado. De esta forma, uno y otro ahorran espacio y tiempo.

Stage y prime

Como mencionamos anteriormente, las instantáneas agrupan todas las dependencias necesarias para que se ejecute la aplicación. Sin secuestro, a veces, dependiendo de cómo construya su complemento, puede ampliar archivos y carpetas que positivamente no son necesarios. Por ejemplo, páginas de manual, posición o quizás bibliotecas y binarios específicos. Snapcraft le permite crear instantáneas a partir de múltiples tipos de fuentes, incluidos repositorios git, archivos (como archivos zip), carpetas locales con diferentes activos o extrayendo datos de paquetes DEB. En algunos casos, los archivos incluidos en las fuentes pueden no ser relevantes para las instantáneas, y debe eliminarlos para dosificar espacio.

Hay dos instancias en el proceso de compilación instantánea en las que puede realizar los ajustes necesarios: durante la etapa y los pasos principales:

  • La etapa es cuando los componentes (partes) se copian en un campo de acción de preparación. Su complemento podría contener varias partes, y cada una de estas partes puede tener sus propias dependencias y activos. Asimismo es posible que más de una parte use los mismos componentes (por ejemplo, una biblioteca compartida), pero solo necesita proporcionarlo una vez para que se ejecute la aplicación. Aquí, puede cerciorarse de que la cinta de utensilios que se incluirán (en etapas) no contenga duplicados, múltiples versiones de la misma biblioteca o binarios de tiempo de ejecución innecesarios.
  • Prime es cuando los componentes se copian en el campo de acción de preparación, muy similar a lo que vimos en el campo de acción de preparación, menos los archivos necesarios para el proceso de construcción en sí. Aquí, puede realizar un filtrado adicional y eliminar cualquier objeto que no sea necesario para ejecutar la aplicación.

Por ejemplo, el sucesivo código eliminará los directorios enumerados y su contenido de un complemento integrado. Esto tiene sentido, porque en tiempo de ejecución, no necesita archivos de encabezado, pkgconfig o docs.

prime:
    - -usr/include
    - -usr/lib/pkgconfig
    - -usr/share/doc 

Cálculo de compresión

El artefacto final del proceso de compilación instantánea es un archivo squashFS comprimido, con el sufijo .snap. Originalmente, las instantáneas se comprimían mediante el cálculo xz, para ganar la máxima compatibilidad con la viso más amplia de dispositivos. Más recientemente, para ayudarnos a acelerar los tiempos de inicio rápido, todavía introdujimos el uso del cálculo lzo, que da como resultado mejoras de 2 a 3 veces el tiempo de inicio de la aplicación. La razón principal de esto es la último compresión utilizada en lzo en comparación con xz, lo que significa que el sistema necesita menos ciclos de CPU y, por lo tanto, menos tiempo para descomprimir el complemento en el sistema. Sin secuestro, todavía introduce inflación de tamaño.

Si considera que el tamaño es más importante para usted y sus usuarios, puede nominar el cálculo xz para sus instantáneas. Es el valencia predeterminado, por lo que simplemente no puede fallar ninguna información adicional. Alternativamente, puede especificar la compresión en el archivo snapcraft.yaml, .eg:


confinement: strict
compression: lzo
grade: stable
...

Recopilación

La utilización del disco importa menos ahora que hace una o dos décadas, pero aún puede intentar hacer que sus aplicaciones sean pequeñas y ordenadas. Esto todavía ayuda a dominar el uso de orgulloso de cuadrilla, alivio la portabilidad y, si está utilizando copias de seguridad del sistema, reduce el tiempo necesario para copiar todos los datos relevantes.

Con las instantáneas, hay muchas formas de dominar el exceso digital, incluido el uso de extensiones, el uso moderado de las dependencias de tiempo de ejecución necesarias y la asesinato de los extras del directorio principal. Sus instantáneas no solo serán de último tamaño, sino que todavía garantizará una veterano consistencia, una mejor integración del sistema y mejorará el tiempo de inicio de la aplicación. Todos estos son utensilios importantes y muy notables de la experiencia del becario. Si tiene otras sugerencias o ideas sobre cómo dosificar espacio u optimizar la creación de instantáneas, únase a nuestro foro y comparta sus pensamientos.

Foto de George Bonev en Unsplash.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba