Distri: una distribuzione per testare tecnologie di gestione rapida dei pacchetti

Michael Stapelberg, autore del gestore di finestre piastrellate i3wm ed ex sviluppatore Debian attivo (ha mantenuto circa 170 pacchetti), sviluppa distribuzione sperimentale distribuzione e un gestore di pacchetti con lo stesso nome. Il progetto si propone come un'esplorazione di possibili modi per aumentare le prestazioni dei sistemi di gestione dei pacchetti e incarna alcune nuove idee per la creazione di distribuzioni. Il codice del gestore pacchetti è scritto in Go and distribuito da sotto licenza BSD.

Una caratteristica chiave del formato del pacchetto della distribuzione è che il pacchetto viene consegnato sotto forma di immagini SquashFS, anziché di archivi tar compressi. L'uso di SquashFS, simile ai formati AppImage e Snap, consente di "montare" un pacchetto senza doverlo decomprimere, risparmiando spazio su disco, consentendo modifiche atomiche e rendendo immediatamente accessibili i contenuti del pacchetto. Allo stesso tempo, i pacchetti distri, come nel classico formato “deb”, contengono solo singoli componenti collegati da dipendenze con altri pacchetti (le librerie non sono duplicate nei pacchetti, ma sono installate come dipendenze). In altre parole, distri cerca di combinare la struttura granulare dei pacchetti delle distribuzioni classiche come Debian con i metodi di distribuzione delle applicazioni sotto forma di contenitori montati.

Ogni pacchetto in distri è montato nella propria directory in modalità di sola lettura (ad esempio, il pacchetto zsh è disponibile come "/ro/zsh-amd64-5.6.2-3"), il che ha un effetto positivo sulla sicurezza e protegge contro modifiche accidentali o dannose. Per formare una gerarchia di directory di servizio, come /usr/bin, /usr/share e /usr/lib, viene utilizzato uno speciale modulo FUSE, che combina il contenuto di tutte le immagini SquashFS installate in un unico insieme (ad esempio, / ro/share fornisce l'accesso alle sottodirectory di condivisione da tutti i pacchetti).

pacchetti in distribuzione fondamentalmente consegnato dai gestori chiamati durante l'installazione (senza hook o trigger) e diverse versioni di un pacchetto possono coesistere tra loro, quindi diventa possibile l'installazione parallela dei pacchetti. La struttura proposta limita le prestazioni del gestore pacchetti solo alla velocità di rete attraverso la quale vengono scaricati i pacchetti. L'effettiva installazione o aggiornamento del pacchetto viene eseguita in modo atomico e non richiede la duplicazione del contenuto.

I conflitti durante l'installazione dei pacchetti vengono eliminati poiché ogni pacchetto è associato alla propria directory e il sistema consente la presenza di diverse versioni di un pacchetto (il contenuto della directory con una revisione più recente del pacchetto è incluso nelle directory unificate). Anche la creazione di pacchetti è molto veloce e non richiede l'installazione di pacchetti in un ambiente di compilazione separato (le rappresentazioni delle dipendenze necessarie dalla directory /ro vengono create nell'ambiente di compilazione).

Supportato comandi tipici di gestione dei pacchetti, come “distri install” e “distri update”, e invece dei comandi informativi, è possibile utilizzare l'utilità standard “ls” (ad esempio, per visualizzare i pacchetti installati, è sufficiente visualizzare un elenco di directory nel menu “ /ro" e per scoprire in quale pacchetto è incluso il file, vedere dove porta il collegamento da questo file).

Il kit di distribuzione prototipo proposto per la sperimentazione comprende circa 1700 pezzi e pronto immagini di installazione con un programma di installazione, adatto sia per l'installazione come sistema operativo principale che per l'esecuzione in QEMU, Docker, Google Cloud e VirtualBox. Supporta l'avvio da una partizione del disco crittografata e una serie di applicazioni standard per la creazione di un desktop basato sul gestore di finestre i3 (Google Chrome è offerto come browser). Fornito un toolkit completo per assemblare una distribuzione, preparare e generare pacchetti, distribuire pacchetti attraverso mirror, ecc.

Fonte: opennet.ru

Aggiungi un commento