Dopo cinque anni e mezzo dalla creazione della serie 3.2.x, è stato pubblicato il rilascio dello strumento per la creazione di installer Calamares 3.3.0, indipendente da specifiche distribuzioni Linux. Gli sviluppatori delle distribuzioni hanno a disposizione diverse decine di moduli già pronti, con implementazioni di varie funzionalità richieste negli installer. Il codice è scritto in C++, l'interfaccia grafica si basa sulla libreria Qt (utilizza QML), per lo sviluppo dei moduli possono essere usati i linguaggi C++ e Python.
Calamares offre funzionalità come modalità di partizionamento manuale e automatico, un sistema flessibile di adattamento dell'aspetto, architettura modulare e un'ampia selezione di moduli già pronti (dalla gestione dei bootloader alla gestione degli utenti). Ad esempio, ci sono moduli per l'uso di NetworkManager, UPower, systemd-boot, GRUB, sgdisk, squashfs-tools e rsync. L'installazione può essere organizzata sostituendo la partizione: i dati vengono copiati su una nuova partizione, che diventa attiva al posto della partizione precedentemente utilizzata, il che è comodo per testare nuove installazioni, lasciando la possibilità di tornare a una versione precedente.
Per creare un proprio installer basato su Calamares, è sufficiente selezionare i moduli già pronti o scrivere i propri, definire la logica di installazione della distribuzione e configurare l'aspetto. Per semplificare e velocizzare lo sviluppo, i moduli e i componenti di Calamares possono essere creati in Python. Tutti i dati di configurazione vengono memorizzati nel formato YAML. Calamares è già utilizzato per l'installazione delle distribuzioni Manjaro, Lubuntu, Asahi, EndeavourOS, wattOS, Rhino, Nitrux, Siduction, Peppermint OS, GeckoLinux, Chakra, NetRunner, KaOS, OpenMandriva e KDE neon. Il progetto è in continua evoluzione grazie alla partecipazione delle comunità KDE, Fedora, Kubuntu e Maui.
Nel nuovo rilascio:
- È garantita la piena compatibilità del framework di base e della maggior parte dei moduli con Qt 6 e le librerie KDE Frameworks 6. Per tutti i moduli QML è fornito un insieme di file compatibili con Qt6. È mantenuta la possibilità di compilazione con Qt5 e KDE Frameworks 5.
- Nell'interfaccia di scelta dei pacchetti "packagechooser" è stata aggiunta la compatibilità con i metadati AppStream 1.0.
- Nel modulo "keyboard" è stata implementata la possibilità di scegliere tra le impostazioni X11 o il servizio DBus locale FreeDesktop locale1. È garantito il salvataggio delle impostazioni della disposizione della tastiera per tutte le disposizioni non-ASCII.
- Nel modulo "dracut" è stata aggiunta la compatibilità per la configurazione del nome del kernel.
- L'interfaccia dei moduli "keyboardq" e "localeq" è stata cambiata da ComboBox a un widget Drawer.
- Nel partizionatore (modulo "partition") è stata aggiunta la possibilità di scegliere tra i formati LUKS e LUKS2. È stata fornita la possibilità di saltare l'installazione del bootloader. È stata utilizzata la funzionalità della libreria KPMCore 21.12 (KDE Partition Manager).
- È stato aggiunto il modulo "zfshostid" per la generazione di /etc/hostid per ZFS.
- Nel modulo "bootloader" sono state ampliate le opzioni per l'uso nella riga di comando del kernel.
- Nel modulo "displaymanager" è stata interrotta la compatibilità con il gestore di display kdm.
- Nel modulo "fstab" è stata completamente ristrutturata la gestione della configurazione di /etc/fstab. Molte impostazioni sono state trasferite nel modulo "mount".
- Sono stati aggiornati i requisiti per lo stile di codifica: il formato del codice ora corrisponde a clang-format 15 o 16.
- Sono stati riorganizzati gli spazi dei nomi utilizzati per il codice C++ (tutte le chiamate sono state trasferite nello spazio dei nomi Calamares, rimuovendo i legami con lo spazio dei nomi CalamaresUtils).
- Come maschera per la sostituzione, invece di @{var} è stato utilizzato ${var}.
- La libreria Boost::Python è stata rimossa dalle dipendenze: per lo sviluppo in Python ora viene utilizzato il set di binding integrato pybind11. Per ripristinare la compilazione con Boost::Python, è possibile impostare la variabile WITH_PYBIND11=OFF.
Fonte: opennet.ru
