Разработчики операционной системы Redox представили в последнее время что они ввели новый менеджер пакетов пкгар, который будет использоваться в системе.
Для тех, кто не знает о Redox который это операционная система что Его основной упор делается на то, что его разработка ведется с использованием языка Rust и концепции микроядра. где на уровне ядра обеспечивается только взаимодействие между процессами и управление ресурсами, а все остальные функции переносятся в библиотеки, которые могут использоваться как ядром, так и пользовательскими агентами.
В рамках проекта разрабатывается новый формат пакета, библиотека с функциями управления пакетами и инструмент командной строки для создания и извлечения коллекции криптографически проверенных файлов.
Формат pkgar не предназначен для универсального использования. и оптимизирован с учетом специфики операционной системы Redox OS.
Менеджер пакетов поддерживает проверку источника с помощью цифровой подписи и проверки целостности. Контрольные суммы вычисляются с использованием хеш-функции blake3. Функциональность проверки pkgar может быть доступна без фактического сохранения файла пакета, манипулируя только частью заголовка.
В частности, пакет состоит из файла заголовка (.pkgar_head) и файл данных (.pkgar_data). Правильно подписанный полный дайджест-пакет (.pkgar) можно получить, просто прикрепив файл заголовка к файлу данных.
Файл заголовка содержит отдельные контрольные суммы для заголовка и параметризованных структур файла данных, а также цифровую подпись для проверки пакета.
Файл данных включает последовательный список всех предоставленных файлов и каталогов. в пакете. Перед каждым элементом данных есть структура с метаданными, которая включает контрольную сумму для самих данных, размер, права доступа, относительный путь к файлу для установки и смещение параметров следующего элемента данных.
Если в процессе обновления отдельные файлы не изменились и контрольная сумма совпадает, то они пропускаются и не загружаются.
Целостность источника можно проверить, получив только файл заголовка и правильность выбранного файла данных, загрузив только структуры с параметрами из этого файла и убедившись, что они соответствуют контрольной сумме, проверенной в файле заголовка.
Непосредственно сами данные могут быть проверены после их загрузки, используя контрольную сумму структуры с параметрами, которые предшествуют данным.
Первоначально пакеты подразумевают возможность повторяемой сборки, что подразумевает, что создание пакета для определенного каталога всегда приводит к формированию идентичного пакета. После установки в системе сохраняются только метаданные, которых достаточно для пересборки пакета из установленных данных (состав пакета, контрольные суммы, пути и права доступа доступны в метаданных).
Основные задачи ПКГАР:
- Атомный: обновления применять, когда это возможно автоматически.
- Экономия трафика: данные передаются по сети только при изменении хэша (при обновлении загружаются только обновленные файлы).
- Используются высокопроизводительные быстрые криптографические алгоритмы (blake3 поддерживает распараллеливание обработки данных при вычислении хэша). Если данные репозитория ранее не кэшировались, можно рассчитать хэш для загруженных данных во время загрузки.
- Минимализм: В отличие от других форматов, pkgar включает только метаданные, необходимые для извлечения пакета.
- Независимость от каталога установки: Любой пользователь может установить пакет в любой каталог (у пользователя должно быть право записи в выбранный каталог).
- Безопасность: пакеты всегда проверяются криптографически, и проверка выполняется до того, как будут выполнены фактические операции с пакетами (сначала загружается заголовок, и, если цифровая подпись верна, данные передаются во временный каталог, который после проверки перемещается в место назначения каталога).