Les développeurs du projet openSUSE ont publié la version de l'installateur Agama 10, conçu pour remplacer l'interface classique d'installation de SUSE et openSUSE, et marquant la séparation de l'interface utilisateur des composants internes de YaST. Agama permet d'utiliser différents front-ends, comme un front-end pour la gestion de l'installation via une interface web. Pour tester le nouvel installateur, des images live ont été créées pour les architectures x86_64, ppc64le, s390x et ARM64, supportant l'installation de la version alpha d'openSUSE Leap 16, de la version en continu openSUSE Tumbleweed et de l'édition MicroOS basée sur des conteneurs. Le code des composants de l'installateur est distribué sous la licence GPLv2 et est écrit en Ruby, Rust et JavaScript/TypeScript.

Les principaux objectifs du développement d'Agama sont d'éliminer les limitations existantes de l'interface graphique, d'accroître les possibilités d'utilisation des fonctionnalités de YaST dans d'autres applications, de se détacher d'un langage de programmation unique et de stimuler la création d'alternatives par des membres de la communauté. L'installateur comprend des fonctionnalités telles que la sélection d'un ensemble d'applications initial, la configuration de la connexion réseau, de la langue, du clavier, du fuseau horaire et des paramètres de localisation, ainsi que la préparation du dispositif de stockage et le partitionnement, l'ajout d'utilisateurs au système.
Pour l'installation de paquets, la vérification du matériel, le partitionnement des disques et d'autres fonctions nécessaires à l'installation, Agama continue d'utiliser les bibliothèques YaST, sur lesquelles sont implémentés des services intermédiaires, abstraisant l'accès aux bibliothèques via un protocole de communication unifié basé sur HTTP. L'installateur utilise une architecture multiprocessus, permettant à l'interface utilisateur de ne pas être bloquée lors de l'exécution d'autres tâches. L'interface de base de gestion de l'installation est construite en utilisant des technologies web. L'interface web est écrite en JavaScript en utilisant le framework React et les composants PatternFly. Un service de messagerie, ainsi qu'un serveur HTTP intégré, est écrit en Ruby.
Dans la nouvelle version :
- Une fonctionnalité de génération de QR code a été ajoutée, contenant un lien pour ouvrir l'interface web de l'installateur dans le navigateur, ce qui simplifie la connexion à l'installateur depuis un smartphone.

- Des composants pour la coloration syntaxique ont été ajoutés, utilisés lors de l'édition du fichier de configuration avec la commande « agama config edit » au format JSON. Par défaut, Vim est appelé pour l'édition (vous pouvez spécifier un autre éditeur via la variable d'environnement EDITOR).

- Le mode d'installation automatique a introduit la capacité de créer des groupes de partitions LVM, des partitions logiques LVM, ainsi que des pools et des partitions LVM avec allocation dynamique d'espace de stockage (thin provisioning). L'utilisation de partitions logiques et de groupes de partitions existants n'est pas encore prise en charge. Deux modes de suppression automatique des partitions ont été ajoutés : suppression inconditionnelle et suppression uniquement si nécessaire (lorsqu'il n'y a pas assez d'espace pour créer les partitions spécifiées).
- Un paramètre de démarrage « agama.install_url » a été ajouté, permettant d'indiquer l'URL du dépôt pour l'installation des paquets, différente de celle spécifiée dans la configuration.
- La possibilité de développer des composants de l'interface web de l'installateur en TypeScript a été fournie. À l'avenir, les développeurs prévoient de transférer progressivement le code de JavaScript vers TypeScript au besoin.
- Pour la gestion de l'état en mode asynchrone dans l'interface web, le framework TanStack Query a été utilisé.
- La taille de l'espace de stockage disponible pour l'installation de paquets supplémentaires après le chargement en mode Live a été augmentée de 500 Mo à 3,5 Go.
- Pour les tests automatisés de l'interface web, au lieu de la bibliothèque Playwright, la bibliothèque JavaScript Puppeteer a été utilisée.
- Les composants de gestion de l'installateur, lancés depuis la ligne de commande, ont été passés de DBus à l'utilisation d'un client HTTP se connectant au serveur HTTP intégré à l'installateur.
Source : opennet.ru


