Nach zwei Jahren Arbeit an dem Projekt haben die Entwickler der SerpentOS-Distribution die Möglichkeit zur Testung der Hauptwerkzeuge bekannt gegeben, zu denen gehören:
- der Paketmanager moss;
- das Containersystem moss-container;
- das Abhängigkeitsmanagementsystem moss-deps;
- das Build-System boulder;
- das Dienstversteckungssystem avalanche;
- der Repository-Manager vessel;
- Steuerungspanel summit;
- die Datenbank moss-db;
- das System für reproduzierbares Bootstrapping (bootstrap) bill.
Ein öffentlicher API und Paketrezepte sind verfügbar. Für die Entwicklung der Werkzeuge wird hauptsächlich die Programmiersprache D verwendet, und der Code ist unter der Zlib-Lizenz erhältlich. Pakete werden in der YAML-Konfigurationssprache geschrieben und in ein eigenes Binärformat .stone zusammengestellt, das Folgendes umfasst:
- Paketmetadaten und deren Abhängigkeiten;
- Informationen über den Standort des Pakets im System im Verhältnis zu anderen Paketen;
- Index der zwischengespeicherten Daten;
- Inhalt der Paketdateien, die für die Funktionalität erforderlich sind.
Der Paketmanager moss übernimmt viele moderne Funktionen, die in solchen Paketmanagern wie eopkg/pisi, rpm, swupd und nix/guix entwickelt wurden, während er gleichzeitig eine traditionelle Sichtweise auf die Paketmanipulation beibehält. Alle Pakete werden standardmäßig im stateless-Modus zusammengestellt und enthalten keine Dateien, die nicht mit dem Betriebssystem verbunden sind, um Situationen zu vermeiden, in denen Konflikte zwischen Paketen gelöst oder Zusammenführungsoperationen erforderlich sind.
Der Paketmanager verwendet ein atomisches Modell zur Aktualisierung des Systems, bei dem der Zustand von rootfs festgehalten wird, und nach der Aktualisierung wird der Zustand auf einen neuen umgeschaltet. Daher besteht die Möglichkeit, im Falle von Problemen während der Aktualisierung Änderungen auf den vorherigen funktionierenden Zustand zurückzusetzen.
Um Speicherplatz beim Speichern mehrerer Versionen von Paketen zu sparen, wird eine Deduplication auf Basis harter Links und eines gemeinsam genutzten Caches angewandt. Der Inhalt installierter Pakete wird im Verzeichnis /os/store/installation/N abgelegt, wobei N die Versionsnummer ist. Auf den Inhalt dieses Verzeichnisses werden Basisverzeichnisse (zum Beispiel zeigt /sbin auf /os/store/installation/0/usr/bin und /usr auf /os/installation/0/usr) durch Links verwiesen.
Der Vorgang zur Installation von Paketen besteht aus den folgenden Phasen:
- Schreiben des Installationsrezepts (stone.yml);
- Bauen des Pakets mit boulder;
- Erhalten des Binärpakets im .stone-Format mit den erforderlichen Metadaten;
- Eintragen in die Paketdatenbank;
- Installation mit dem Paketmanager moss.
Rund um das Projekt hat sich das alte Team von Entwicklern der Distribution Solus zusammengefunden. Zum Beispiel sind an der Entwicklung der Distribution SerpentOS Ikey Doherty, der Schöpfer der Distribution Solus, und Joshua Strobl, der Hauptentwickler des Desktop Budgie, beteiligt. Letzterer hatte zuvor seinen Rücktritt aus dem Leitungsgremium (Core Team) des Projekts Solus bekannt gegeben und seine Rolle als verantwortliche Person für die Interaktion mit Entwicklern und die Entwicklung der Benutzeroberfläche (Experience Lead) niedergelegt.
Die Entwickler von SerpentOS rufen Fachleute, die die Programmiersprache D beherrschen, dazu auf, an der Entwicklung des Hauptwerkzeugs und/oder der Erstellung von Paket-Rezepten mitzuarbeiten. Nicht-technische Fachleute werden gebeten, bei der Übersetzung der Dokumentation in verschiedene Sprachen zu helfen.
Quelle: opennet.ru
