Distri - en distribusjon for testing av raske pakkehåndteringsteknologier

Michael Stapelberg, forfatter av i3wm tiled window manager og tidligere aktiv Debian-utvikler (opprettholdt ca. 170 pakker), utvikler eksperimentell distribusjon distri og en pakkebehandler med samme navn. Prosjektet er posisjonert som en utforskning av mulige måter å øke ytelsen til pakkehåndteringssystemer og legemliggjør noen nye ideer for å bygge distribusjoner. Pakkebehandlingskoden er skrevet i Go og distribuert av under BSD-lisens.

Et sentralt trekk ved distribusjonens pakkeformat er at pakken leveres i form av SquashFS-bilder, i stedet for komprimerte tar-arkiver. Ved å bruke SquashFS, som ligner på AppImage- og Snap-formatene, kan du "montere" en pakke uten å måtte pakke den ut, noe som sparer diskplass, tillater atomære endringer og gjør innholdet i pakken umiddelbart tilgjengelig. Samtidig inneholder distri-pakker, som i det klassiske "deb"-formatet, kun individuelle komponenter koblet av avhengigheter med andre pakker (biblioteker dupliseres ikke i pakker, men er installert som avhengigheter). Distri prøver med andre ord å kombinere den granulære pakkestrukturen til klassiske distribusjoner som Debian med metodene for å levere applikasjoner i form av monterte beholdere.

Hver pakke i distribusjon er montert i sin egen katalog i skrivebeskyttet modus (for eksempel er zsh-pakken tilgjengelig som "/ro/zsh-amd64-5.6.2-3"), noe som har en positiv effekt på sikkerheten og beskytter mot utilsiktede eller ondsinnede endringer. For å danne et hierarki av tjenestekataloger, som /usr/bin, /usr/share og /usr/lib, brukes en spesiell FUSE-modul, som kombinerer innholdet i alle installerte SquashFS-bilder til én helhet (for eksempel / ro/share-katalog gir tilgang til delte underkataloger fra alle pakker).

Pakker i distri fundamentalt levert fra behandlere kalt under installasjon (ingen kroker eller triggere), og forskjellige versjoner av en pakke kan eksistere side om side med hverandre, slik at parallell installasjon av pakker blir mulig. Den foreslåtte strukturen begrenser ytelsen til pakkebehandlingen kun til nettverksgjennomstrømningen som pakkene lastes ned gjennom. Selve installasjonen eller oppdateringen av pakken utføres atomisk og krever ikke duplisering av innhold.

Konflikter ved installasjon av pakker elimineres siden hver pakke er knyttet til sin egen katalog og systemet tillater tilstedeværelse av forskjellige versjoner av én pakke (innholdet i katalogen med en nyere revisjon av pakken er inkludert i fagforeningskatalogene). Å bygge pakker er også veldig raskt og krever ikke installasjon av pakker i et eget byggemiljø (representasjoner av nødvendige avhengigheter fra /ro-katalogen opprettes i byggemiljøet).

Støttes typiske pakkehåndteringskommandoer, for eksempel "distri install" og "distri update", og i stedet for informasjonskommandoer, kan du bruke standard "ls"-verktøy (for eksempel for å se installerte pakker, bare vis en liste over kataloger i " /ro»-hierarkiet, og for å finne ut hvilken pakke filen er inkludert i, se hvor lenken fra denne filen fører).

Prototypedistribusjonssettet foreslått for eksperimentering inkluderer ca 1700 pakker og klar installasjonsbilder med et installasjonsprogram, egnet både for installasjon som hoved OS og for kjøring i QEMU, Docker, Google Cloud og VirtualBox. Den støtter oppstart fra en kryptert diskpartisjon og et sett med standardapplikasjoner for å lage et skrivebord basert på i3-vindusbehandleren (Google Chrome tilbys som nettleser). sørget for et komplett verktøysett for å sette sammen en distribusjon, klargjøre og generere pakker, distribuere pakker gjennom speil, etc.

Kilde: opennet.ru

Legg til en kommentar