Michael Stapelberg, der Autor des Mosaik-Fenstermanagers i3wm und früher aktiv im Debian-Projekt (hat etwa 170 Pakete betreut), experimentelle Distribution und der gleichnamige Paketmanager. Das Projekt wird als Forschung zu möglichen Wegen zur Steigerung der Effizienz von Paketverwaltungssystemen präsentiert und bringt einige neue Ideen zur Entwicklung von Distributionen zur Anwendung. Der Code des Paketmanagers ist in Go geschrieben und unter der BSD-Lizenz.
Ein zentrales Merkmal des im Distribuierungsformat angebotenen Paketformats ist die Bereitstellung von Paketen in Form von SquashFS-Images anstelle von komprimierten tar-Archiven. Die Verwendung von SquashFS, ähnlich wie bei den Formaten AppImage und Snap, ermöglicht es, Pakete «einzuhängen», ohne sie entpacken zu müssen, was Speicherplatz spart, atomare Änderungen zulässt und den Inhalt des Pakets sofort verfügbar macht. Dabei enthalten die distri-Pakete, ähnlich wie im klassischen Deb-Format, nur einzelne Komponenten, die über Abhängigkeiten mit anderen Paketen verbunden sind (Bibliotheken werden nicht in den Paketen dupliziert, sondern als Abhängigkeiten installiert). Mit anderen Worten, distri versucht, die granulierte Paketstruktur klassischer Distributionen wie Debian mit den Methoden der Bereitstellung von Anwendungen in Form von einhängbaren Containern zu kombinieren.
Jedes Paket in distri wird in sein eigenes Verzeichnis im Nur-Lese-Modus montiert (zum Beispiel ist das Paket mit zsh als „/ro/zsh-amd64-5.6.2-3“ verfügbar). Dies verbessert die Sicherheit und schützt vor unbeabsichtigten oder böswilligen Änderungen. Um eine Hierarchie von Systemverzeichnissen wie /usr/bin, /usr/share und /usr/lib zu erstellen, wird ein spezielles FUSE-Modul verwendet, das den Inhalt aller installierten SquashFS-Images zu einem Gesamtbild vereint (zum Beispiel gewährt das Verzeichnis /ro/share Zugriff auf die Unterverzeichnisse share aus allen Paketen).
in distri grundsätzlich von während der Installation aufgerufenen Handlern (keine Hooks und Trigger), sodass verschiedene Versionen eines Pakets nebeneinander existieren können. Dies ermöglicht die Parallelinstallation von Paketen. Die vorgeschlagene Struktur begrenzt die Leistung des Paketmanagers lediglich auf die Netzwerkbandbreite, über die die Pakete heruntergeladen werden. Die Installation oder Aktualisierung eines Pakets erfolgt atomar und erfordert keine Duplizierung des Inhalts.
Die Konflikte bei der Installation von Paketen werden ausgeschlossen, da jedes Paket mit seinem eigenen Verzeichnis verbunden ist und im System verschiedene Versionen eines Pakets vorhanden sein dürfen (in die Zusammenführungsverzeichnisse wird der Inhalt des Verzeichnisses mit der neuesten Revision des Pakets integriert). Die Paketinstallation erfolgt ebenfalls sehr schnell und erfordert keine Einrichtung separater Build-Umgebungen (in der Build-Umgebung werden die notwendigen Abhängigkeiten aus dem Verzeichnis /ro dargestellt).
standardmäßige Paketmanagement-Befehle wie „distri install“ und „distri update“, und anstelle von Informationsbefehlen kann das Standardwerkzeug „ls“ verwendet werden (zum Beispiel reicht es aus, die Verzeichnisse in der Hierarchie „/ro“ aufzulisten, um installierte Pakete zu sehen, und um herauszufinden, zu welchem Paket eine Datei gehört, kann man den Zielort des Links zu dieser Datei überprüfen).
Das für Experimente vorgeschlagene Prototyp-Distribution umfasst etwa und fertig mit einem Installer, der sowohl für die Installation als auch für den Einsatz in QEMU, Docker, Google Cloud und VirtualBox geeignet ist. Das Booten von einer verschlüsselten Partition wird unterstützt, ebenso wie eine Sammlung von Standardanwendungen für die Desktop-Erstellung basierend auf dem Fenstermanager i3 (als Browser wird Google Chrome empfohlen). ein vollständiges Toolkit zur Erstellung von Distributionen, zur Vorbereitung und Erstellung von Paketen, zur Verbreitung von Paketen über Mirrors usw.
Quelle: opennet.ru
