Distri - дистрибутив для обкатки технологій швидкого керування пакетами

Майкл Штапельберг (Michael Stapelberg), автор мозаїчного віконного менеджера i3wm та в минулому активний розробник Debian (супроводжував близько 170 пакетів), розвиває експериментальний дистрибутив distri та однойменний пакетний менеджер. Проект позиціонується як дослідження можливих шляхів збільшення продуктивності систем управління пакетами та втілює деякі нові ідеї побудови дистрибутивів. Код пакетного менеджера написаний мовою Go та поширюється під ліцензією BSD.

Ключовою особливістю запропонованого в дистрибутиві формату пакетів є постачання пакета у формі образів SquashFS замість стислих tar-архівів. Застосування SquashFS, за аналогією з форматами AppImage та Snap, дозволяє «примонтувати» пакет без необхідності виконання розпакування, що заощаджує дисковий простір, допускає атомарні зміни та робить вміст пакету миттєво доступним. При цьому пакети distri, як і в класичному форматі deb, містять лише окремі компоненти, пов'язані залежностями з іншими пакетами (бібліотеки не дублюються в пакетах, а встановлюються як залежності). Іншими словами, distri намагається поєднати гранульовану пакетну структуру класичних дистрибутивів, таких як Debian, з методами постачання додатків у формі контейнерів, що монтуються.

Кожен пакет у distri монтується в свій каталог в режимі тільки для читання (наприклад, пакет з zsh доступний як "/ro/zsh-amd64-5.6.2-3"), що позитивно впливає на безпеку та захищає від випадкових чи зловмисних змін. Для формування ієрархії службових каталогів, таких як /usr/bin, /usr/share та /usr/lib, застосовується спеціальний FUSE-модуль, що поєднує вміст усіх встановлених SquashFS-образів в одне ціле (наприклад, каталог /ro/share надає доступ до підкаталогам share зі всіх пакетів).

пакети у distri важливо позбавлені від викликаних у процесі установки обробників (немає хуків і тригерів), а різні версії пакета можуть співіснувати один з одним, тому стає можливим розпаралелювання установки пакетів. Запропонована структура обмежує продуктивність пакетного менеджера лише пропускною спроможністю мережі, якою завантажуються пакети. Безпосередньо інсталяція або оновлення пакета виконується атомарно і не вимагає дублювання вмісту.

Конфлікти при встановленні пакетів виключаються оскільки кожен пакет зв'язується зі своїм каталогом і у системі допускається наявність різних версій одного пакета (в зведені каталоги підключається вміст каталогу з свіжою ревізією пакета). Складання пакетів також здійснюється дуже швидко і не вимагає встановлення пакетів в окреме складальне оточення (у складальному оточенні створюється уявлення необхідних залежностей з каталогу /ro).

Підтримуються типові команди управління пакетами, такі як "distri install" і "distri update", а замість інформаційних команд можна застосовувати штатну утиліту "ls" (наприклад, для перегляду встановлених пакетів достатньо вивести список каталогів в ієрархії "/ro", а для того щоб дізнатися до складу якого пакета входить файл, подивитися куди веде посилання з файлу).

Запропонований для експериментів прототип дистрибутива включає близько 1700 пакетів та готові настановні образи з інсталятором, придатні як для встановлення як основна ОС, так і для запуску в QEMU, Docker, Google Cloud та VirtualBox. Підтримується завантаження із шифрованого дискового розділу та набір типових програм для створення робочого столу на базі віконного менеджера i3 (як браузер пропонується Google Chrome). надається повноцінний інструментарій для збирання дистрибутива, підготовки та формування пакетів, розповсюдження пакетів дзеркал тощо.

Джерело: opennet.ru

Додати коментар або відгук