Distri - jakelu nopeiden paketinhallintatekniikoiden testaamiseen

Michael Stapelberg, i3wm-ikkunahallinnan kirjoittaja ja entinen aktiivinen Debian-kehittäjä (ylläpitänyt noin 170 pakettia), kehittyy kokeellinen jakelu distri ja samanniminen paketinhallinta. Projekti on sijoittunut kartoittamaan mahdollisia tapoja lisätä paketinhallintajärjestelmien suorituskykyä ja ilmentää uusia ideoita jakelun rakentamiseen. Paketinhallintakoodi on kirjoitettu Go ja jakelija BSD-lisenssillä.

Jakelun pakettimuodon keskeinen ominaisuus on, että paketti toimitetaan SquashFS-kuvien muodossa pakattujen tar-arkistojen sijaan. SquashFS:n käyttäminen, joka on samanlainen kuin AppImage- ja Snap-formaatit, mahdollistaa paketin "liitämisen" ilman, että sitä tarvitsee purkaa, mikä säästää levytilaa, mahdollistaa atomien muutokset ja tekee paketin sisällön heti käytettävissä. Samaan aikaan distri-paketit, kuten klassisessa "deb"-muodossa, sisältävät vain yksittäisiä komponentteja, jotka on linkitetty riippuvuuksilla muihin paketteihin (kirjastoja ei kopioida paketeissa, vaan ne asennetaan riippuvuuksina). Toisin sanoen distri yrittää yhdistää klassisten jakeluiden, kuten Debianin, rakeisen pakettirakenteen menetelmiin, joilla sovelluksia toimitetaan asennettujen säiliöiden muodossa.

Jokainen distri:n paketti liitetään omaan hakemistoonsa vain luku -tilassa (esimerkiksi paketti, jossa on zsh, on saatavana nimellä "/ro/zsh-amd64-5.6.2-3"), millä on myönteinen vaikutus turvallisuuteen ja suojaa vahingossa tapahtuvilta tai haitallisilta muutoksilta. Palveluhakemistojen, kuten /usr/bin, /usr/share ja /usr/lib, hierarkian muodostamiseen käytetään erityistä FUSE-moduulia, joka yhdistää kaikkien asennettujen SquashFS-otostiedostojen sisällön yhdeksi kokonaisuudeksi (esimerkiksi / ro/share-hakemisto tarjoaa pääsyn kaikkien pakettien alihakemistojen jakamiseen).

paketit distrissä pohjimmiltaan toimitettu asennuksen aikana kutsutuilta käsittelijöiltä (ei koukkuja tai laukaisimia), ja paketin eri versiot voivat esiintyä rinnakkain, joten pakettien rinnakkainen asennus tulee mahdolliseksi. Ehdotettu rakenne rajoittaa paketinhallinnan suorituskyvyn vain verkon läpikulkukykyyn, jonka kautta paketit ladataan. Paketin varsinainen asennus tai päivitys suoritetaan atomaarisesti, eikä se vaadi sisällön päällekkäisyyttä.

Pakettien asennuksessa ilmenevät ristiriidat eliminoituvat, koska jokainen paketti liittyy omaan hakemistoonsa ja järjestelmä sallii yhden paketin eri versioiden olemassaolon (hakemiston sisältö, jossa on paketin uudempi versio, sisällytetään liiton hakemistoihin). Pakettien rakentaminen on myös erittäin nopeaa eikä vaadi pakettien asentamista erilliseen koontiympäristöön (tarvittavat riippuvuudet /ro-hakemistosta luodaan rakennusympäristöön).

Tuettu tyypillisiä paketinhallintakomentoja, kuten "distri install" ja "distri update", ja tietokomentojen sijasta voit käyttää tavallista "ls" -apuohjelmaa (esimerkiksi asennettujen pakettien katseluun riittää, että näyttöön tulee luettelo hakemistoista "/ro"-hierarkia ja saadaksesi selville, mihin pakettiin tiedosto sisältyy, katso minne tästä tiedostosta oleva linkki johtaa).

Kokeiluun ehdotettu prototyypin jakelusarja sisältää noin 1700 pakettia ja valmis asennuskuvat asennusohjelmalla, joka soveltuu sekä asennettavaksi pääkäyttöjärjestelmäksi että käytettäväksi QEMU:ssa, Dockerissa, Google Cloudissa ja VirtualBoxissa. Se tukee käynnistystä salatusta levyosiosta ja joukon vakiosovelluksia työpöydän luomiseen i3-ikkunanhallinnan pohjalta (Google Chrome tarjotaan selaimena). Edellyttäen täydellinen työkalupakki jakelun kokoamiseen, pakettien valmisteluun ja generointiin, pakettien jakeluun peilien kautta jne.

Lähde: opennet.ru

Lisää kommentti