Distri - een distributie voor het testen van snelle pakketbeheertechnologieën

Michael Stapelberg, auteur van de i3wm Tiled Window Manager en voormalig actieve Debian-ontwikkelaar (onderhoudde ongeveer 170 pakketten), ontwikkelt experimentele distributie distributie en een pakketbeheerder met dezelfde naam. Het project is gepositioneerd 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 pakketbeheerdercode is geschreven in Go en gedistribueerd door onder BSD-licentie.

Een belangrijk kenmerk van het pakketformaat van de distributie is dat het pakket wordt geleverd in de vorm van SquashFS-images, in plaats van gecomprimeerde tar-archieven. Door gebruik te maken van SquashFS, vergelijkbaar met de AppImage- en Snap-formaten, kunt u een pakket "mounten" zonder het uit te hoeven pakken, waardoor schijfruimte wordt bespaard, atomaire wijzigingen mogelijk zijn en de inhoud van het pakket direct toegankelijk wordt. Tegelijkertijd bevatten distri-pakketten, net als in het klassieke “deb”-formaat, alleen individuele componenten die door afhankelijkheden met andere pakketten zijn verbonden (bibliotheken worden niet gedupliceerd in pakketten, maar worden geïnstalleerd als afhankelijkheden). Met andere woorden, distri probeert de gedetailleerde pakketstructuur van klassieke distributies zoals Debian te combineren met de methoden voor het leveren van applicaties in de vorm van aangekoppelde containers.

Elk pakket in distri wordt in zijn eigen map gemount in de alleen-lezen-modus (het zsh-pakket is bijvoorbeeld beschikbaar als "/ro/zsh-amd64-5.6.2-3"), wat een positief effect heeft op de beveiliging en beschermt tegen onbedoelde of kwaadwillige wijzigingen. Om een ​​hiërarchie van servicemappen te vormen, zoals /usr/bin, /usr/share en /usr/lib, wordt een speciale FUSE-module gebruikt, die de inhoud van alle geïnstalleerde SquashFS-images combineert tot één geheel (bijvoorbeeld de / ro/share map biedt toegang tot het delen van submappen van alle pakketten).

Pakketjes in distri fundamenteel afgeleverd van handlers die tijdens de installatie worden opgeroepen (geen hooks of triggers), en verschillende versies van een pakket kunnen naast elkaar bestaan, zodat parallelle installatie van pakketten mogelijk wordt. De voorgestelde structuur beperkt de prestaties van de pakketbeheerder alleen tot de netwerkdoorvoer waarmee de pakketten worden gedownload. De daadwerkelijke installatie of update van het pakket wordt atomair uitgevoerd en vereist geen duplicatie van inhoud.

Conflicten bij het installeren van pakketten worden geëlimineerd omdat elk pakket aan zijn eigen map is gekoppeld en het systeem de aanwezigheid van verschillende versies van één pakket toestaat (de inhoud van de map met een recentere revisie van het pakket is opgenomen in de samenvoegmappen). Het bouwen van pakketten gaat ook erg snel en vereist geen installatie van pakketten in een aparte bouwomgeving (representaties van de noodzakelijke afhankelijkheden uit de map /ro worden in de bouwomgeving gemaakt).

Ondersteund typische pakketbeheeropdrachten, zoals “distri install” en “distri update”, en in plaats van informatieopdrachten kunt u het standaardhulpprogramma “ls” gebruiken (om bijvoorbeeld geïnstalleerde pakketten te bekijken, geeft u gewoon een lijst met mappen weer in de map “ /ro”-hiërarchie, en om erachter te komen in welk pakket het bestand is opgenomen, kijk waar de link uit dit bestand naartoe leidt).

De prototype-distributiekit die voor experimenten wordt voorgesteld, omvat ongeveer 1700 pakketten en klaar installatie afbeeldingen met een installatieprogramma, geschikt voor zowel installatie als hoofdbesturingssysteem als voor gebruik in QEMU, Docker, Google Cloud en VirtualBox. Het ondersteunt het opstarten vanaf een gecodeerde schijfpartitie en een reeks standaardtoepassingen voor het maken van een desktop op basis van de i3-vensterbeheerder (Google Chrome wordt aangeboden als browser). Op voorwaarde dat een complete toolkit voor het samenstellen van een distributie, het voorbereiden en genereren van pakketten, het distribueren van pakketten via mirrors, enz.

Bron: opennet.ru

Voeg een reactie