Distri — a distribution for testing rapid package management technologies

Michael Stapelberg, author of the i3wm tiling window manager and a former active Debian developer (maintained about 170 packages), develops an experimental distribution distri and the eponymous package manager. The project is positioned as an exploration of possible ways to enhance the performance of package management systems and embodies some new ideas for building distributions. The code for the package manager is written in Go and is distributed under the BSD license.

A key feature of the package format proposed in distri is the delivery of packages in the form of SquashFS images, instead of compressed tar archives. The use of SquashFS, similar to AppImage and Snap formats, allows packages to be 'mounted' without the need for unpacking, which saves disk space, allows atomic changes, and makes the package contents instantly available. Similar to the classical 'deb' format, distri packages contain only individual components linked by dependencies to other packages (libraries are not duplicated in packages but installed as dependencies). In other words, distri attempts to combine the granular package structure of traditional distributions like Debian with application delivery methods in the form of mountable containers.

Each package in distri is mounted in its own directory in read-only mode (for example, the zsh package is available as '/ro/zsh-amd64-5.6.2-3'), positively influencing security and protecting against accidental or malicious changes. A special FUSE module is used to create the hierarchy of service directories such as /usr/bin, /usr/share, and /usr/lib, combining the contents of all installed SquashFS images into a single whole (for example, the /ro/share directory provides access to subdirectories share from all packages).

Packages in distri are fundamentally devoid of from the handlers invoked during the installation process (no hooks or triggers), and different versions of the package can coexist with each other, enabling parallel installation of packages. The proposed structure limits the package manager's performance only to the network bandwidth through which packages are downloaded. The actual installation or update of a package is performed atomically and does not require content duplication.

Conflicts during package installation are avoided since each package is tied to its own directory, and the system allows for different versions of the same package (the contents of the directory with the fresher revision of the package are connected to the summary directories). Package building is also done very quickly and does not require installing packages in a separate build environment (the build environment creates views of the necessary dependencies from the /ro directory).

Supported standard package management commands, such as 'distri install' and 'distri update', can use the regular utility 'ls' for informational commands (for example, to view installed packages it is sufficient to output the list of directories in the '/ro' hierarchy, and to find out which package a file belongs to, check where the link from this file points).

The proposed prototype distribution for experimentation includes about 1700 packages and ready installation images with an installer, suitable for installation as the main OS, as well as for running in QEMU, Docker, Google Cloud, and VirtualBox. It supports booting from an encrypted disk partition and includes a set of typical applications for creating a desktop based on the i3 window manager (with Google Chrome being the suggested browser). A complete toolkit is provided for building the distribution, preparing and forming packages, distributing packages to mirrors, etc.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster