Michael Stapelberg, autore del gestore finestre mosaico i3wm e in passato sviluppatore attivo di Debian (ha gestito circa 170 pacchetti), distribuzione sperimentale e l'omonimo gestore di pacchetti. Il progetto si propone come un'indagine su potenziali modi per aumentare la produttività dei sistemi di gestione dei pacchetti e incorpora alcune nuove idee sulla costruzione delle distribuzioni. Il codice del gestore di pacchetti è scritto in linguaggio Go e con licenza BSD.
Una caratteristica chiave del formato dei pacchetti proposto nella distribuzione è la fornitura dei pacchetti in forma di immagini SquashFS, anziché in archivi tar compressi. L'uso di SquashFS, analogamente ai formati AppImage e Snap, consente di "montare" il pacchetto senza la necessità di estrarlo, risparmiando spazio su disco, permettendo modifiche atomiche e rendendo immediatamente accessibile il contenuto del pacchetto. Inoltre, i pacchetti distri, proprio come nel formato classico "deb", contengono solo singoli componenti, con dipendenze da altri pacchetti (le librerie non sono duplicate nei pacchetti, ma installate come dipendenze). In altre parole, distri cerca di combinare la struttura dei pacchetti granuli dei classici sistemi operativi come Debian con i metodi di distribuzione delle applicazioni in forma di contenitori montabili.
Ogni pacchetto in distri si monta in una propria cartella in modalità sola lettura (ad esempio, il pacchetto con zsh è accessibile come «/ro/zsh-amd64-5.6.2-3»), il che ha un effetto positivo sulla sicurezza e protegge da modifiche accidentali o malevole. Per formare la gerarchia delle cartelle di sistema, come /usr/bin, /usr/share e /usr/lib, viene utilizzato un modulo FUSE speciale, che unisce il contenuto di tutte le immagini SquashFS installate in un tutto unico (ad esempio, la cartella /ro/share fornisce accesso alle sottocartelle share di tutti i pacchetti).
in distri è fondamentalmente dai gestori invocati durante il processo di installazione (non ci sono hook e trigger), e diverse versioni di un pacchetto possono coesistere tra loro, rendendo possibile l'installazione parallela dei pacchetti. La struttura proposta limita le prestazioni del gestore di pacchetti solo alla larghezza di banda della rete attraverso la quale i pacchetti vengono scaricati. L'installazione o l'aggiornamento di un pacchetto avviene in modo atomico e non richiede la duplicazione del contenuto.
I conflitti durante l'installazione dei pacchetti sono esclusi poiché ogni pacchetto è associato al proprio catalogo e nel sistema possono coesistere diverse versioni dello stesso pacchetto (il contenuto del catalogo con la revisione più recente viene incluso nei cataloghi consolidati). La costruzione dei pacchetti avviene anche molto rapidamente e non richiede l'installazione dei pacchetti in un ambiente di costruzione separato (nell'ambiente di costruzione vengono create le rappresentazioni delle dipendenze necessarie dal catalogo /ro).
comandi standard per la gestione dei pacchetti, come “distri install” e “distri update”, e al posto dei comandi informativi si può utilizzare l'utility standard “ls” (ad esempio, per visualizzare i pacchetti installati è sufficiente visualizzare l'elenco delle cartelle nell'gerarchia “/ro”, e per scoprire a quale pacchetto appartiene un file, si può controllare dove porta il link di quel file).
Il prototipo del sistema operativo proposto per esperimenti include circa e pronti con l'installer, adatto sia per l'installazione come sistema operativo principale che per l'esecuzione in QEMU, Docker, Google Cloud e VirtualBox. Supporta il caricamento da una partizione di disco crittografata e un set di applicazioni standard per creare un ambiente desktop basato sul gestore di finestre i3 (Google Chrome è suggerito come browser). un completo set di strumenti per la compilation del sistema operativo, preparazione e creazione di pacchetti, distribuzione dei pacchetti sui mirror, ecc.
Fonte: opennet.ru
