Distri - dystrybucja służąca do testowania technologii szybkiego zarządzania pakietami

Michael Stapelberg, autor kafelkowego menedżera okien i3wm i były aktywny programista Debiana (utrzymywał około 170 pakietów), rozwija się dystrybucja eksperymentalna dystrybucja i menedżer pakietów o tej samej nazwie. Projekt ma na celu badanie możliwych sposobów zwiększenia wydajności systemów zarządzania pakietami i zawiera kilka nowych pomysłów na budowanie dystrybucji. Kod menedżera pakietów jest napisany w Go i dystrybuowane przez na licencji BSD.

Kluczową cechą formatu pakietu dystrybucji jest to, że pakiet jest dostarczany w postaci obrazów SquashFS, a nie skompresowanych archiwów tar. Używanie SquashFS, podobnie jak formatów AppImage i Snap, pozwala „zamontować” pakiet bez konieczności jego rozpakowywania, co oszczędza miejsce na dysku, pozwala na atomowe zmiany i sprawia, że ​​zawartość pakietu jest natychmiast dostępna. Jednocześnie pakiety dystrybucyjne, podobnie jak w klasycznym formacie „deb”, zawierają tylko pojedyncze komponenty połączone zależnościami z innymi pakietami (biblioteki nie są duplikowane w pakietach, ale instalowane jako zależności). Innymi słowy, dystrybucja próbuje połączyć granulowaną strukturę pakietów klasycznych dystrybucji, takich jak Debian, z metodami dostarczania aplikacji w postaci zamontowanych kontenerów.

Każdy pakiet w dystrybucji jest montowany w swoim własnym katalogu w trybie tylko do odczytu (przykładowo pakiet z zsh jest dostępny jako „/ro/zsh-amd64-5.6.2-3”), co pozytywnie wpływa na bezpieczeństwo i chroni przed przypadkowymi lub złośliwymi zmianami. Aby utworzyć hierarchię katalogów usług, takich jak /usr/bin, /usr/share i /usr/lib, używany jest specjalny moduł FUSE, który łączy zawartość wszystkich zainstalowanych obrazów SquashFS w jedną całość (na przykład / katalog ro/share zapewnia dostęp do podkatalogów share ze wszystkich pakietów).

Pakiety zasadniczo w dystrybucji dostarczony z procedur obsługi wywoływanych podczas instalacji (bez haków i wyzwalaczy), a różne wersje pakietu mogą ze sobą współistnieć, dzięki czemu możliwa staje się równoległa instalacja pakietów. Proponowana struktura ogranicza wydajność menedżera pakietów jedynie do przepustowości sieci, przez którą pobierane są pakiety. Właściwa instalacja lub aktualizacja pakietu odbywa się atomowo i nie wymaga powielania treści.

Eliminowane są konflikty podczas instalowania pakietów, ponieważ każdy pakiet jest powiązany z własnym katalogiem, a system pozwala na obecność różnych wersji jednego pakietu (zawartość katalogu z nowszą wersją pakietu zawarta jest w katalogach unii). Budowanie pakietów jest również bardzo szybkie i nie wymaga instalowania pakietów w oddzielnym środowisku kompilacji (w środowisku kompilacji tworzone są reprezentacje niezbędnych zależności z katalogu /ro).

Utrzymany typowe polecenia do zarządzania pakietami, takie jak „distri install” i „distri update”, a zamiast poleceń informacyjnych można użyć standardowego narzędzia „ls” (na przykład, aby wyświetlić zainstalowane pakiety, wystarczy wyświetlić listę katalogów w „ /ro” i aby dowiedzieć się w jakim pakiecie znajduje się plik, zobacz dokąd prowadzi link z tego pliku).

Prototypowy zestaw dystrybucyjny zaproponowany do eksperymentów zawiera ok 1700 paczek i gotowy obrazy instalacyjne z instalatorem, nadającym się zarówno do instalacji jako główny system operacyjny, jak i do pracy w QEMU, Docker, Google Cloud i VirtualBox. Obsługuje bootowanie z zaszyfrowanej partycji dysku oraz zestaw standardowych aplikacji do tworzenia pulpitu w oparciu o menedżera okien i3 (jako przeglądarka oferowana jest Google Chrome). Opatrzony kompletny zestaw narzędzi do składania dystrybucji, przygotowywania i generowania pakietów, dystrybucji pakietów poprzez serwery lustrzane itp.

Źródło: opennet.ru

Dodaj komentarz