Después de cinco años y medio desde la creación de la rama 3.2.x, se ha publicado el lanzamiento de la herramienta para construir instaladores Calamares 3.3.0, que no depende de distribuciones específicas de Linux. A los desarrolladores de distribuciones se les han proporcionado varias docenas de módulos listos con diversas funcionalidades solicitadas en los instaladores. El código está escrito en C++, la interfaz gráfica se basa en la biblioteca Qt (se utiliza QML), y para el desarrollo de módulos se pueden emplear los lenguajes C++ y Python.
Calamares ofrece funcionalidades como modos manual y automático para la partición de discos, un sistema flexible de adaptación de la apariencia, arquitectura modular y una gran selección de módulos listos (desde la gestión de cargadores de arranque hasta la gestión de usuarios). Por ejemplo, hay módulos para utilizar NetworkManager, UPower, systemd-boot, GRUB, sgdisk, squashfs-tools y rsync. La instalación puede organizarse reemplazando la partición: los datos se copian a una nueva partición, la cual se activa en lugar de la partición previamente utilizada, lo que resulta conveniente para probar nuevas instalaciones, dejando la posibilidad de volver a la versión anterior.
Para crear un instalador propio basado en Calamares, solo basta elegir módulos listos o escribir los propios, definir la lógica de instalación de la distribución y personalizar la apariencia. Para simplificar y acelerar el desarrollo, los módulos y componentes de Calamares pueden crearse en Python. Todos los datos de configuración se almacenan en formato YAML. Calamares ya se utiliza para organizar la instalación de distribuciones como Manjaro, Lubuntu, Asahi, EndeavourOS, wattOS, Rhino, Nitrux, Siduction, Peppermint OS, GeckoLinux, Chakra, NetRunner, KaOS, OpenMandriva y KDE neon. El proyecto se desarrolla con la participación de las comunidades de KDE, Fedora, Kubuntu y Maui.
En esta nueva versión:
- Se garantiza plena compatibilidad del marco básico y la mayoría de los módulos con Qt 6 y las bibliotecas KDE Frameworks 6. Se ha proporcionado un conjunto de archivos QML compatibles con Qt6 para todos los módulos QML. Se mantiene la posibilidad de compilar con Qt5 y KDE Frameworks 5.
- En la interfaz de selección de paquetes 'packagechooser' se ha añadido soporte para los metadatos AppStream 1.0.
- En el módulo 'keyboard' se ha implementado la opción de elegir entre usar configuraciones de X11 o el servicio de DBus FreeDesktop locale1. Se garantiza la conservación de las configuraciones del diseño del teclado para todos los diseños no ASCII.
- En el módulo 'dracut' se ha añadido soporte para la configuración del nombre del kernel.
- La interfaz de los módulos «keyboardq» y «localeq» ha sido traducida de ComboBox a un widget Drawer.
- Se ha añadido la opción de elegir entre los formatos LUKS y LUKS2 en el editor de secciones (módulo «partition»). Se ha habilitado la posibilidad de omitir la instalación del gestor de arranque. Se ha utilizado la funcionalidad de la biblioteca KPMCore 21.12 (KDE Partition Manager).
- Se ha añadido el módulo «zfshostid» para generar /etc/hostid para ZFS.
- En el módulo «bootloader» se han ampliado las opciones para su uso en la línea de comandos del núcleo.
- En el módulo «displaymanager» se ha dejado de dar soporte al gestor de pantalla kdm.
- En el módulo «fstab» se ha rediseñado completamente el manejo de la configuración de /etc/fstab. Muchas configuraciones se han trasladado al módulo «mount».
- Se han actualizado los requisitos de estilo de codificación: el formato del código ahora cumple con clang-format 15 o 16.
- Se han revisado los espacios de nombres utilizados para el código en C++ (todas las llamadas se han trasladado al espacio de nombres Calamares, se han eliminado las vinculaciones al espacio de nombres CalamaresUtils).
- Se ha utilizado ${var} como máscara de sustitución en lugar de @{var}.
- La biblioteca Boost::Python se ha eliminado de las dependencias; para el desarrollo en Python ahora se utiliza el conjunto integrado de enlaces pybind11. Para devolver la construcción con Boost::Python, se puede establecer la variable WITH_PYBIND11=OFF.
Fuente: opennet.ru
