Po dwóch latach pracy nad projektem deweloperzy dystrybucji SerpentOS ogłosili możliwość testowania głównych narzędzi, które obejmują:
- menedżer pakietów moss;
- system kontenerów moss-container;
- system zarządzania zależnościami moss-deps;
- system budowy boulder;
- system ukrywania usług avalanche;
- menedżer repozytoriów vessel;
- panelu administracyjnego summit;
- baza danych moss-db;
- system reprodukowalnego bootstrappingu (bootstrap) bill.
Dostępne są publiczne API i przepisy pakietów. Do rozwoju narzędzi głównie używany jest język programowania D, a kod jest dystrybuowany na licencji Zlib. Pakiety pisane są w języku konfiguracji YAML i kompilowane do własnego formatu binarnego .stone, który obejmuje:
- Metadane pakietu i jego zależności;
- Informację o lokalizacji pakietu w systemie w odniesieniu do innych pakietów;
- Indeks danych w pamięci podręcznej;
- Zawartość plików pakietu, niezbędnych do działania.
Menedżer pakietów moss czerpie z wielu nowoczesnych możliwości rozwijanych w takich menedżerach pakietów jak eopkg/pisi, rpm, swupd i nix/guix, jednocześnie zachowując tradycyjne podejście do manipulacji pakietami. Wszystkie pakiety domyślnie kompilowane są w trybie stateless i nie zawierają plików niezwiązanych z systemem operacyjnym, aby uniknąć sytuacji wymagających rozwiązania konfliktów między pakietami lub łączenia operacji.
Menedżer pakietów stosuje atomowy model aktualizacji systemu, w którym rejestrowany jest stan rootfs, a po aktualizacji stan przełączany jest na nowy. W rezultacie, jeśli podczas aktualizacji wystąpią jakieś problemy, istnieje możliwość powrotu do poprzedniego stanu roboczego.
Aby zaoszczędzić miejsce na dysku podczas przechowywania wielu wersji pakietów, stosowane jest deduplikacja oparta na twardych linkach i wspólnym cache. Zawartość zainstalowanych pakietów umieszczana jest w katalogu /os/store/installation/N, gdzie N to numer wersji. Do zawartości tego katalogu za pomocą linków przylegają podstawowe katalogi (np. /sbin wskazuje na /os/store/installation/0/usr/bin, a /usr na /os/installation/0/usr).
Proces instalacji pakietów składa się z następujących etapów:
- Napisanie recepty instalacji (stone.yml);
- Kompilacja pakietu za pomocą boulder;
- Pobranie binarnego pakietu w formacie .stone z niezbędnymi metadanymi;
- Zapisanie pakietów w bazie danych;
- Instalacja za pomocą menedżera pakietów moss.
Wokół projektu zjednoczyła się stara ekipa deweloperów dystrybucji Solus. Na przykład, w rozwój dystrybucji SerpentOS zaangażowani są Ikey Doherty, twórca dystrybucji Solus, oraz Joshua Strobl, kluczowy deweloper środowiska graficznego Budgie, który wcześniej ogłosił odejście z zarządu (Core Team) projektu Solus i zrezygnował z funkcji lidera odpowiedzialnego za współpracę z deweloperami oraz rozwój interfejsu użytkownika (Experience Lead).
Deweloperzy SerpentOS zachęcają specjalistów znających język programowania D do przyłączenia się do prac nad głównym narzędziem i/lub pisaniem przepisów na pakiety, a osoby nietechniczne proszą o pomoc w tłumaczeniu dokumentacji na różne języki.
Źródło: opennet.ru
