Dopo due anni di lavoro sul progetto, gli sviluppatori della distribuzione SerpentOS hanno annunciato la possibilità di testare gli strumenti principali, che comprendono:
- il gestore pacchetti moss;
- il sistema di container moss-container;
- il sistema di gestione delle dipendenze moss-deps;
- il sistema di build boulder;
- il sistema di occultamento dei servizi avalanche;
- il gestore dei repository vessel;
- pannello di controllo summit;
- il database moss-db;
- il sistema di bootstrapping riproducibile bill.
Sono disponibili un'API pubblica e ricette per i pacchetti. Per sviluppare gli strumenti si utilizza principalmente il linguaggio di programmazione D, e il codice è distribuito con licenza Zlib. I pacchetti sono scritti in YAML e compilati in un formato binario proprietario .stone, che include:
- Metadati del pacchetto e le sue dipendenze;
- Informazioni sulla posizione del pacchetto nel sistema rispetto ad altri pacchetti;
- Indice dei dati memorizzati nella cache;
- Contenuto dei file del pacchetto necessari per il funzionamento.
Il gestore di pacchetti moss si ispira a molte funzionalità moderne sviluppate in gestori di pacchetti come eopkg/pisi, rpm, swupd e nix/guix, mantenendo al contempo un approccio tradizionale alla gestione dei pacchetti. Tutti i pacchetti vengono compilati di default in modalità stateless e non includono file non associati al sistema operativo, per evitare situazioni in cui siano necessarie risoluzioni di conflitti tra pacchetti o operazioni di fusione.
Il gestore di pacchetti utilizza un modello atomico di aggiornamento del sistema, in cui viene registrato lo stato di rootfs, e dopo l'aggiornamento, lo stato viene cambiato nel nuovo. Di conseguenza, se si verificano problemi durante l'aggiornamento, è possibile tornare allo stato operativo precedente.
Per risparmiare spazio su disco durante la memorizzazione di più versioni dei pacchetti, viene applicata la deduplicazione basata su hard link e una cache condivisa. Il contenuto dei pacchetti installati è collocato nella directory /os/store/installation/N, dove N è il numero della versione. I cataloghi di base sono collegati al contenuto di questa directory tramite collegamenti (ad esempio, /sbin punta a /os/store/installation/0/usr/bin, e /usr a /os/installation/0/usr).
Il processo di installazione dei pacchetti è composto dalle seguenti fasi:
- Scrittura della ricetta di installazione (stone.yml);
- Costruzione del pacchetto utilizzando boulder;
- Ottenimento del pacchetto binario in formato .stone con i relativi metadati;
- Registrazione nel database dei pacchetti;
- Installazione tramite il gestore di pacchetti moss.
Attorno al progetto si è riunito un vecchio team di sviluppatori della distribuzione Solus. Ad esempio, nella realizzazione della distribuzione SerpentOS sono coinvolti Ikey Doherty, creatore della distribuzione Solus, e Joshua Strobl, sviluppatore principale del desktop Budgie, che aveva precedentemente annunciato il suo ritiro dal consiglio di gestione (Core Team) del progetto Solus e rinunciato ai suoi poteri di leader responsabile delle interazioni con gli sviluppatori e dello sviluppo dell'interfaccia utente (Experience Lead).
Gli sviluppatori di SerpentOS invitano specialisti esperti nel linguaggio di programmazione D a unirsi allo sviluppo degli strumenti principali e/o alla scrittura delle ricette dei pacchetti, mentre i non tecnici sono invitati a contribuire alla traduzione della documentazione in diverse lingue.
Fonte: opennet.ru
