Distri: una distribución para probar tecnologías de gestión rápida de paquetes

Michael Stapelberg, autor del administrador de ventanas en mosaico i3wm y ex desarrollador activo de Debian (mantuvo alrededor de 170 paquetes), desarrolla distribución experimental distribuir y un administrador de paquetes del mismo nombre. El proyecto se posiciona como una exploración de posibles formas de aumentar el rendimiento de los sistemas de gestión de paquetes e incorpora algunas ideas nuevas para crear distribuciones. El código del administrador de paquetes está escrito en Go y distribuido por bajo la licencia BSD.

Una característica clave del formato del paquete de distribución es que el paquete se entrega en forma de imágenes de SquashFS, en lugar de archivos tar comprimidos. El uso de SquashFS, similar a los formatos AppImage y Snap, le permite "montar" un paquete sin tener que descomprimirlo, lo que ahorra espacio en el disco, permite cambios atómicos y hace que el contenido del paquete sea accesible instantáneamente. Al mismo tiempo, los paquetes distri, como en el formato clásico "deb", contienen solo componentes individuales vinculados por dependencias con otros paquetes (las bibliotecas no están duplicadas en los paquetes, sino que se instalan como dependencias). En otras palabras, distri intenta combinar la estructura granular de paquetes de distribuciones clásicas como Debian con los métodos de entrega de aplicaciones en forma de contenedores montados.

Cada paquete en distri se monta en su propio directorio en modo de solo lectura (por ejemplo, el paquete con zsh está disponible como “/ro/zsh-amd64-5.6.2-3”), lo que tiene un efecto positivo en la seguridad y protege contra cambios accidentales o maliciosos. Para formar una jerarquía de directorios de servicios, como /usr/bin, /usr/share y /usr/lib, se utiliza un módulo FUSE especial, que combina el contenido de todas las imágenes de SquashFS instaladas en un todo (por ejemplo, / El directorio ro/share proporciona acceso a subdirectorios compartidos de todos los paquetes).

Paquetes en distri fundamentalmente entregado de los controladores llamados durante la instalación (sin ganchos ni activadores), y diferentes versiones de un paquete pueden coexistir entre sí, por lo que es posible la instalación paralela de paquetes. La estructura propuesta limita el rendimiento del administrador de paquetes únicamente al rendimiento de la red a través de la cual se descargan los paquetes. La instalación o actualización real del paquete se realiza de forma atómica y no requiere duplicación de contenido.

Se eliminan los conflictos al instalar paquetes ya que cada paquete está asociado a su propio directorio y el sistema permite la presencia de diferentes versiones de un paquete (el contenido del directorio con una revisión más reciente del paquete se incluye en los directorios de unión). La compilación de paquetes también es muy rápida y no requiere instalar paquetes en un entorno de compilación separado (las representaciones de las dependencias necesarias del directorio /ro se crean en el entorno de compilación).

Soportado comandos típicos de administración de paquetes, como “distri install” y “distri update”, y en lugar de comandos de información, puede usar la utilidad estándar “ls” (por ejemplo, para ver los paquetes instalados, simplemente muestre una lista de directorios en el “ /ro” jerarquía, y para saber en qué paquete está incluido el archivo, vea a dónde lleva el enlace de este archivo).

El kit de distribución prototipo propuesto para experimentación incluye aproximadamente 1700 paquetes y listo Imágenes de instalación con un instalador, apto tanto para instalación como SO principal como para ejecución en QEMU, Docker, Google Cloud y VirtualBox. Admite el arranque desde una partición de disco cifrada y un conjunto de aplicaciones estándar para crear un escritorio basado en el administrador de ventanas i3 (Google Chrome se ofrece como navegador). Previsto un conjunto de herramientas completo para ensamblar una distribución, preparar y generar paquetes, distribuir paquetes a través de mirrors, etc.

Fuente: opennet.ru

Añadir un comentario