Michael Stapelberg, de auteur van de mozaïek vensterbeheerder i3wm en voormalig actief Debian ontwikkelaar (ondersteunde ongeveer 170 pakketten), een experimentele distributie en de gelijknamige pakketbeheerder. Het project wordt gepresenteerd als een verkenning van mogelijke manieren om de prestaties van pakketbeheersystemen te verbeteren en belichaamt enkele nieuwe ideeën voor het bouwen van distributies. De code van de pakketbeheerder is geschreven in de Go-taal en onder de BSD-licentie.
Een sleutelkenmerk van het in de distributie voorgestelde pakketformaat is de levering van pakketten in de vorm van SquashFS-images, in plaats van gecomprimeerde tar-archieven. Het gebruik van SquashFS, vergelijkbaar met de formaten AppImage en Snap, maakt het mogelijk om een pakket te 'monteren' zonder het uit te pakken, wat schijfruimte bespaart, atomische wijzigingen mogelijk maakt en de inhoud van het pakket onmiddellijk toegankelijk maakt. Bovendien bevatten distri-pakketten, net als in het klassieke 'deb'-formaat, alleen afzonderlijke componenten die afhankelijkheden hebben met andere pakketten (bibliotheken worden niet gedupliceerd in pakketten, maar worden als afhankelijkheden geïnstalleerd). Met andere woorden, distri probeert de gefragmenteerde pakketstructuur van klassieke distributies zoals Debian te combineren met methoden voor het leveren van applicaties in de vorm van gemonteerde containers.
Elk pakket in distri wordt gemonteerd in zijn eigen map in alleen-lezen modus (bijvoorbeeld, het pakket met zsh is beschikbaar als '/ro/zsh-amd64-5.6.2-3'), wat een positieve invloed heeft op de veiligheid en beschermt tegen ongewenste of kwaadaardige wijzigingen. Voor het opbouwen van de hiërarchie van systeemmappen, zoals /usr/bin, /usr/share en /usr/lib, wordt een speciale FUSE-module gebruikt die de inhoud van alle geïnstalleerde SquashFS-images samenvoegt tot één geheel (bijvoorbeeld, de map /ro/share biedt toegang tot de submappen van share uit alle pakketten).
In distri zijn ze principieel van de verwerkers die tijdens de installatie worden aangeroepen (geen hooks of triggers), en verschillende versies van een pakket kunnen naast elkaar bestaan, waardoor parallelle installatie van pakketten mogelijk wordt. De voorgestelde structuur beperkt de prestaties van de pakketbeheerder alleen tot de bandbreedte van het netwerk waarlangs de pakketten worden gedownload. De installatie of update van een pakket gebeurt atomisch en vereist geen duplicatie van de inhoud.
Bij het installeren van pakketten worden conflicten uitgesloten, omdat elk pakket is gekoppeld aan zijn eigen catalogus en het systeem verschillende versies van één pakket toestaat (de inhoud van de catalogus met de meest recente versie van het pakket wordt aan de gecombineerde catalogi toegevoegd). Het bouwen van pakketten gebeurt ook zeer snel en vereist niet dat pakketten in een aparte bouwomgeving worden geïnstalleerd (in de bouwomgeving worden de noodzakelijke afhankelijkheden vanuit de catalogus /ro gepresenteerd).
standaard commando's voor pakketbeheer, zoals 'distri install' en 'distri update', en in plaats van informatieve commando's kan de standaardtool 'ls' worden gebruikt (bijvoorbeeld om de geïnstalleerde pakketten te bekijken, volstaat het om een lijst van catalogi in de hiërarchie '/ro' weer te geven, en om te achterhalen tot welk pakket een bestand behoort, kijk je naar waar de link van dit bestand naartoe verwijst).
Het prototype van de distributie dat voor experimenten is voorgesteld, omvat ongeveer en kant-en-klaar met een installer, geschikt voor installatie als het hoofd-OS, maar ook voor uitvoering in QEMU, Docker, Google Cloud en VirtualBox. Opstarten vanaf een versleutelde schijfpartitie wordt ondersteund en er is een verzameling standaard applicaties voor het creëren van een bureau op basis van de window manager i3 (Google Chrome wordt als browser aangeboden). een compleet gereedschap voor het bouwen van de distributie, voorbereiding en vormgeving van pakketten, distributie van pakketten via mirrors, enz.
Bron: opennet.ru
