Проект Redox OS представил пакетный менеджер pkgar, написанный на языке Rust
16 марта 2020 года
Разработчики операционной системы Redox, написанной с использованием языка Rust и концепции микроядра, представили новый пакетный менеджер pkgar. В рамках проекта развивается новый формат пакетов, библиотека с функциями управления пакетами и инструментарий командной строки для создания и извлечения криптографически проверенной коллекции файлов. Код pkgar написан на языке Rust и распространяется под лицензией MIT.
Формат pkgar не претендует на универсальность и оптимизирован с учётом специфики операционной системы Redox OS. Пакетным менеджером поддерживается верификация источника по цифровой подписи и контроль целостности. Контрольные суммы рассчитываются при помощи хэш-функции blake3. Связанная с верификацией функциональность pkgar может быть доступна без фактического сохранения архива пакета, манипулируя только заголовочной частью. В частности, пакет образуют заголовочный файл (.pkgar_head) и файл с данными (.pkgar_data). Корректно подписанный полный сводный пакет (.pkgar) может быть получен путём простого присоединения файла с заголовком к файлу с данными ("cat example.pkgar_head example.pkgar_data > example.pkgar").
Файл с заголовком содержит отдельные контрольные суммы для заголовка и структур с параметрами из файла данных, а также цифровую подпись для проверки пакета. Файл c данными включает последовательное перечисление всех файлов и каталогов, поставляемых в пакете. Перед каждым элементом данных приводится структура с метаданными, которые включают контрольную сумму для самих данных, размер, права доступа, относительный путь устанавливаемого файла и смещение параметров следующего элемента данных. Если в процессе обновления отдельные файлы не изменились и контрольная сумма совпадает, то они пропускаются и не загружаются.
Проверить целостность источника можно получив лишь заголовочный файл, а корректность выбранного файла с данными - загрузив лишь структуры с параметрами этого файла и удостоверившись в их соответствии контрольной сумме, заверенной в заголовочном файле. Непосредственно сами данные можно проверить после их загрузки, используя контрольную сумму из cтруктуры с параметрами, идущей перед данными.
Пакеты изначально подразумевают возможность повторяемой сборки, подразумевающей то, что создание пакета для определённого каталога всегда приводит к формированию идентичного пакета. После установки в системе сохраняются лишь метаданные, которых достаточно для реконструирования пакета из установленных данных (состав пакета, контрольные суммы, пути и права доступа имеются в метаданных).
Основные цели pkgar:
- Атомарность - обновления применяются по возможности автоматически.
- Экономия трафика - данные передаются по сети только при изменении хэша (при обновлении загружаются только изменившиеся файлы).
- Высокая производительность, задействованы быстрые криптографические алгоритмы (blake3 поддерживает распараллеливание обработки данных при вычислении хеша). Если данные из репозитория не были ранее прокэшированы хэш для загружаемых данных может быть вычислен во время загрузки.
- Минималистичность - в отличие от других форматов, pkgar включает только метаданные, необходимые для извлечения пакета.
- Независимость от каталога установки - пакет может быть установлен в любой каталог, любым пользователем (пользователь должен иметь право на запись в выбранный каталог).
- Безопасность - пакеты всегда криптографически верифицируются, а верификация выполняется до совершения фактических операций с пакетом (вначале загружается заголовок и если цифровая подпись верна, во временный каталог загружаются данные, которые перемещаются в целевой каталог после верификации).
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.