Michael Stapelberg, Autor des Mosaik-Fenster-Managers i3wm und früher aktiver Entwickler von Debian (verantwortlich für etwa 170 Pakete), eine experimentelle Distribution und den gleichnamigen Paketmanager. Das Projekt positioniert sich als Untersuchung möglicher Wege zur Steigerung der Leistung von Paketverwaltungssystemen und verkörpert einige neue Ideen zur Erstellung von Distributionen. Der Code des Paketmanagers ist in Go geschrieben und unter der BSD-Lizenz stehen.
Ein wesentliches Merkmal des im Distributionsformat angebotenen Pakets ist die Bereitstellung des Pakets 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, das Paket ohne Auspacken zu "mounten", was Speicherplatz spart, atomare Änderungen erlaubt und den Inhalt des Pakets sofort verfügbar macht. Dabei enthalten distri-Pakete, ähnlich dem klassischen "deb"-Format, nur einzelne Komponenten, die durch Abhängigkeiten mit anderen Paketen verbunden sind (Bibliotheken werden nicht in Paketen dupliziert, sondern als Abhängigkeiten installiert). Mit anderen Worten, distri versucht, die granulare Paketstruktur klassischer Distributionen wie Debian mit den Methoden der Bereitstellung von Anwendungen in Form von einbindbaren Containern zu kombinieren.
Jedes Paket in distri wird im Lesezugriffsmodus in sein eigenes Verzeichnis eingebunden (zum Beispiel ist das Paket mit zsh als "/ro/zsh-amd64-5.6.2-3" verfügbar), was sich positiv auf die Sicherheit auswirkt und vor unbeabsichtigten oder böswilligen Änderungen schützt. Zur Bildung der Hierarchie von Dienstverzeichnissen, wie /usr/bin, /usr/share und /usr/lib, wird ein spezielles FUSE-Modul verwendet, das den Inhalt aller installierten SquashFS-Images in ein Ganzes integriert (zum Beispiel bietet das Verzeichnis /ro/share Zugriff auf die Unterverzeichnisse share aus allen Paketen).
in distri sind prinzipiell Die während der Installation aufgerufenen Handler (keine Hooks und Trigger) sind ausgeschlossen. Verschiedene Versionen des Pakets können koexistieren, weshalb eine parallele Installation von Paketen möglich wird. Die vorgeschlagene Struktur begrenzt die Leistung des Paketmanagers nur durch die Netzwerkbandbreite, über die die Pakete heruntergeladen werden. Die Installation oder Aktualisierung eines Pakets erfolgt atomar und erfordert keine Duplizierung des Inhalts.
Konflikte bei der Installation von Paketen werden ausgeschlossen, da jedes Paket mit seinem eigenen Verzeichnis verknüpft ist und im System die Existenz verschiedener Versionen eines Pakets erlaubt ist (in die zusammenfassenden Verzeichnisse wird der Inhalt des Verzeichnisses mit der aktuelleren Revision des Pakets eingebunden). Das Erstellen von Paketen erfolgt ebenfalls sehr schnell und erfordert keine Installation der Pakete in einer separaten Build-Umgebung (in der Build-Umgebung werden Ansichten der benötigten Abhängigkeiten aus dem Verzeichnis /ro erstellt).
Typische Paketverwaltungsbefehle wie "distri install" und "distri update" können verwendet werden, anstelle der Informationsbefehle kann das Standardwerkzeug "ls" genutzt werden (zum Beispiel reicht es aus, die Verzeichnisse in der Hierarchie "/ro" aufzulisten, um die installierten Pakete anzuzeigen, und um herauszufinden, zu welchem Paket eine Datei gehört, kann die Stelle angesehen werden, auf die der Link von dieser Datei verweist).
Das für Experimente vorgeschlagene Prototyp-Distribution umfasst etwa und fertige mit einem Installer, der sowohl für die Installation als Haupt-OS als auch für die Ausführung in QEMU, Docker, Google Cloud und VirtualBox geeignet ist. Es wird das Laden von einer verschlüsselten Festplattenpartition unterstützt und ein Set von Standardanwendungen zur Erstellung einer Desktop-Umgebung auf Basis des Fenstermanagers i3 (als Browser wird Google Chrome angeboten). ein vollständiges Toolkit zur Erstellung der Distribution, zur Vorbereitung und Erstellung von Paketen, zur Verbreitung von Paketen über Mirrors usw.
Quelle: opennet.ru
