Комитет FESCo (Fedora Engineering Steering Committee), отвечающий за техническую часть разработки дистрибутива Fedora Linux, утвердил проект по обеспечению повторяемых сборок пакетов в осеннем выпуске Fedora 43. Целью инициативы заявлена возможность применения повторяемых сборок для не менее, чем 99% пакетов в репозитории.
Повторяемые сборки дадут возможность формировать собственные RPM-пакеты, совпадающие с предлагаемыми для загрузки готовыми бинарными пакетами. Совпадения обеспечивается на уровне основных метаданных и включённых в пакет файлов (отличаться будут только метаданные со временем сборки, сборочным хостом и заверением цифровой подписью). Пользователь сможет лично убедиться, что распространяемые в пакетах бинарные файлы собраны из предоставляемых исходных текстов и не содержат скрытых изменений. Проверка тождественности бинарной сборки позволяет не полагаться лишь на доверие к сборочной инфраструктуре дистрибутива, компрометация компилятора или сборочного инструментария в которой может привести к подстановке скрытых закладок.
Помимо безопасности повторяемые сборки также будут полезны для контроля качества - проблемы при попытке добиться повторяемых сборок часто вызваны ошибками или беспорядком в коде, например, использованием в пакетах, помеченных как "noarch", зависимостей, привязанных к определённым аппаратным архитектурам. Повторяемые сборки также упростят разработку пакетов - после небольших правок пересобранные пакеты будут отличаться только элементами, непосредственно связанными с внесённым изменением, что значительно упростит сравнение версий пакетов и анализ изменений.
При формировании повторяемых сборок учитываются такие нюансы, как точное соответствие зависимостей; использование неизменного состава и версий сборочного инструментария; идентичный набор опций и настроек по умолчанию; сохранение порядка сборки файлов (применение тех же методов сортировки); отключение добавления компилятором непостоянной служебной информации, такой как случайные значения, ссылки на файловые пути и данные о дате и времени сборки. На воспроизводимость сборок также влияют ошибки и состояния гонки в инструментарии.
Инфраструктура проекта Fedora уже подготовлена к осуществлению повторяемых сборок. Например, в прошлых выпусках в сборочную систему внесены изменения, синхронизирующие метаданные о времени модификации файлов с эталонным исходным кодом (mtime теперь не зависит от времени сборки), а также обеспечивающие постоянный порядок перечисления метаданных и структур в бинарных файлах. На данном этапе охват повторяемыми сборками оценивается в 90%. Для обеспечения повторяемых сборок в оставшихся 10% требуется участие мэнтйнеров проблемных пакетов. Для стимулирования внесения исправлений в подобные пакеты, сбои при осуществлении повторяемых сборок намерены трактовать как ошибки при сборке.
Похожие проекты по обеспечению поддержки повторяемых сборок также развивают дистрибутивы Debian, Arch Linux, openSUSE и NixOS.
Источник: https://www.opennet.ru/opennews/art.shtml?num=63061