Distri - disztribúció a gyors csomagkezelési technológiák tesztelésére

Michael Stapelberg, az i3wm csempézett ablakkezelő szerzője és egykori aktív Debian fejlesztő (körülbelül 170 csomagot karbantartott), fejleszt kísérleti eloszlás disztri és egy azonos nevű csomagkezelőt. A projekt célja a csomagkezelő rendszerek teljesítményének növelésének lehetséges módjainak feltárása, és néhány új ötletet testesít meg a disztribúciók felépítéséhez. A csomagkezelő kódja a Go és nyelven van írva forgalmazza a BSD licenc alatt.

A disztribúció csomagformátumának kulcsfontosságú jellemzője, hogy a csomagot SquashFS-képek formájában szállítják a tömörített tar-archívumok helyett. A SquashFS használata, hasonlóan az AppImage és Snap formátumokhoz, lehetővé teszi a csomagok „csatolását” anélkül, hogy ki kellene csomagolni, ami lemezterületet takarít meg, lehetővé teszi az atomi változtatásokat, és azonnal elérhetővé teszi a csomag tartalmát. Ugyanakkor a disztri csomagok, akárcsak a klasszikus „deb” formátumban, csak egyedi komponenseket tartalmaznak, amelyeket függőségek kapcsolnak össze más csomagokkal (a könyvtárak nem duplikálódnak csomagokban, hanem függőségekként telepítve vannak). Más szóval, a disztri megpróbálja kombinálni a klasszikus disztribúciók, például a Debian, granulált csomagstruktúráját az alkalmazások csatlakoztatott konténerek formájában történő szállításának módszereivel.

A disztri minden egyes csomagja a saját könyvtárába van csatolva írásvédett módban (például a zsh csomag "/ro/zsh-amd64-5.6.2-3" néven érhető el), ami pozitív hatással van a biztonságra és védi. a véletlen vagy rosszindulatú változtatások ellen. A szolgáltatási könyvtárak (például /usr/bin, /usr/share és /usr/lib) hierarchiájának kialakításához egy speciális FUSE modult használnak, amely az összes telepített SquashFS képfájl tartalmát egyetlen egésszé egyesíti (például a / ro/share könyvtár hozzáférést biztosít az összes csomag alkönyvtárainak megosztásához).

csomagok disztriben alapvetően szállított a telepítés során meghívott kezelőktől (nincs hook vagy trigger), és egy csomag különböző verziói együtt létezhetnek egymással, így lehetővé válik a csomagok párhuzamos telepítése. A javasolt struktúra a csomagkezelő teljesítményét csak arra a hálózati átviteli sebességre korlátozza, amelyen keresztül a csomagok letöltésre kerülnek. A csomag tényleges telepítése vagy frissítése atomszerűen történik, és nincs szükség a tartalom megkettőzésére.

A csomagok telepítése során felmerülő konfliktusok megszűnnek, mivel minden csomag saját könyvtárhoz van társítva, és a rendszer lehetővé teszi egy csomag különböző verzióinak jelenlétét (a csomag újabb változatával rendelkező könyvtár tartalma az uniós könyvtárakban található). A csomagok felépítése is nagyon gyors, és nem kell külön összeállítási környezetben telepíteni a csomagokat (a szükséges függőségek a /ro könyvtárból a build környezetben jönnek létre).

Támogatott tipikus csomagkezelési parancsok, mint a „distri install” és „distri update”, és az információs parancsok helyett használhatja a szabványos „ls” segédprogramot (például a telepített csomagok megtekintéséhez csak jelenítse meg a könyvtárak listáját a „ /ro” hierarchiában, és annak megtudásához, hogy a fájl melyik csomagban található, nézze meg, hová vezet a fájl hivatkozása).

A kísérletezésre javasolt prototípus elosztó készlet kb 1700 csomag és kész telepítési képek telepítővel, amely mind a fő operációs rendszerként történő telepítésre, mind a QEMU, Docker, Google Cloud és VirtualBox futtatására alkalmas. Támogatja a titkosított lemezpartícióról történő indítást és egy sor szabványos alkalmazást az asztal létrehozásához az i3 ablakkezelőn (a Google Chrome böngészőként elérhető). Biztosítani komplett eszközkészlet disztribúció összeállításához, csomagok elkészítéséhez és generálásához, csomagok tükrös szétosztásához stb.

Forrás: opennet.ru

Hozzászólás