Gli sviluppatori del progetto openSUSE hanno pubblicato la versione dell'installatore Agama 10, progettato per sostituire l'interfaccia classica di installazione di SUSE e openSUSE, e notevole per la separazione dell'interfaccia utente dai componenti interni di YaST. Agama offre la possibilità di utilizzare diversi frontend, come un'interfaccia web per la gestione dell'installazione. Per testare il nuovo installatore, sono state create versioni live per le architetture x86_64, ppc64le, s390x e ARM64, supportando l'installazione della versione alpha di openSUSE Leap 16, la build sempre aggiornata di openSUSE Tumbleweed e la versione MicroOS basata su container. Il codice dei componenti dell'installatore è distribuito con licenza GPLv2 ed è scritto in Ruby, Rust e JavaScript/TypeScript.

Gli obiettivi principali dello sviluppo di Agama sono l'eliminazione delle limitazioni esistenti nell'interfaccia grafica, l'ampliamento delle possibilità di utilizzo delle funzionalità di YaST in altre applicazioni, l'abbandono della dipendenza da un unico linguaggio di programmazione e la promozione della creazione di impostazioni alternative da parte dei membri della comunità. L'installatore include funzioni come la scelta di un insieme iniziale di applicazioni, la configurazione della connessione di rete, della lingua, della tastiera, del fuso orario e delle impostazioni di localizzazione, la preparazione del dispositivo di archiviazione e la partizione, l'aggiunta di utenti al sistema.
Per l'installazione di pacchetti, il controllo hardware, il partizionamento dei dischi e altre funzionalità necessarie durante l'installazione in Agama continuano a essere utilizzate le librerie YaST, sopra le quali sono implementati servizi intermedi che astraendo l'accesso alle librerie tramite un protocollo di comunicazione unificato basato su HTTP. L'installer utilizza un'architettura multi-processo, grazie alla quale l'interfaccia utente non viene bloccata durante l'esecuzione di altre operazioni. L'interfaccia principale per la gestione dell'installazione è costruita utilizzando tecnologie web. L'interfaccia web è scritta in JavaScript utilizzando il framework React e i componenti PatternFly. Un servizio di messaggistica e un server http integrato sono scritti in Ruby.
Nella nuova versione:
- È stata aggiunta la possibilità di generare un codice QR contenente un link per aprire l'interfaccia web dell'installer nel browser, semplificando così la connessione all'installer tramite smartphone.

- Sono stati aggiunti componenti per l'evidenziazione della sintassi, utilizzati durante la modifica del file di configurazione tramite «agama config edit» in formato JSON. Per l'editing predefinito viene chiamato Vim (è possibile specificare un altro editor tramite la variabile d'ambiente EDITOR).

- In modalità di installazione automatica è stata implementata la possibilità di creare gruppi di partizioni LVM, partizioni logiche LVM, così come pool e partizioni LVM con allocazione dinamica dello spazio di archiviazione (thin provisioning). Attualmente non è supportato l'uso di partizioni logiche e gruppi di partizioni già esistenti. Sono stati aggiunti due modalità di eliminazione automatica delle partizioni: eliminazione incondizionata ed eliminazione solo quando necessario (quando manca spazio per creare le partizioni specificate).
- È stato aggiunto il parametro di avvio «agama.install_url», tramite il quale è possibile specificare l'URL del repository per l'installazione dei pacchetti, diverso da quello indicato nella configurazione.
- È stata fornita la possibilità di sviluppare componenti dell'interfaccia web del programma di installazione in linguaggio Typescript. In futuro, gli sviluppatori intendono gradualmente tradurre il codice da JavaScript a Typescript secondo necessità.
- Nel web interface per la gestione dello stato in modalità asincrona viene utilizzato il framework TanStack Query.
- La dimensione dello storage disponibile per l'installazione di pacchetti aggiuntivi dopo il caricamento in modalità Live è stata ampliata da 500 MB a 3,5 GB.
- Per il testing automatizzato dell'interfaccia web è stata utilizzata la libreria JavaScript Puppeteer al posto del sistema Playwright.
- I componenti di gestione dell'installatore, eseguiti dalla riga di comando, sono stati convertiti da DBus all'uso di un client HTTP che interagisce con il server HTTP integrato nell'installatore.
Fonte: opennet.ru


