Действительно ли сборки Ubuntu детерминированы? Я предположил, что они, то есть, если я воссоздам процесс создания установочного носителя Ubuntu, то я получу то же изображение, (поразрядно, с теми же контрольными суммами) как та на зеркалах Ubuntu.
Недавнее сообщение Joanna Rutkowska (ведущий разработчик Qubes дистрибутив ОС) предполагает, что это не так:
в настоящее время большинство проектов, включая все дистрибутивы Linux, не создает детерминировано
Почему нет?
Нет они не. Давайте разъясним различие здесь,
Система поддерживает "восстанавливаемые сборки"?
Да все системы поддерживают пакеты, которые детерминированы.
Система осуществляет "восстанавливаемые сборки"?
Нет, хотя это действительно помогает диагностировать проблемы, и работы делаются для создания пакетов восстанавливаемыми - об ошибках сообщают и обрабатывают так или иначе.
Все, без исключения, восстанавливаемого?
Даже не близко.
Теперь давайте определим "восстанавливаемые сборки"
Сборка восстанавливаема, если дали тот же исходный код, среда сборки и инструкции по сборке, любая сторона может воссоздать поразрядные идентичные копии всех указанных артефактов.
Соответствующие атрибуты среды сборки, инструкций по сборке и исходного кода, а также ожидаемых восстанавливаемых артефактов определяются авторами или дистрибьюторами. Артефакты сборки являются частями результатов сборки, которые являются желаемым основным выводом.
Теперь давайте говорить о том, что требуется
Проверьте эту страницу под "Как", который устанавливает три критерия
система сборки должна быть сделана совершенно детерминированной: преобразование данного источника должно всегда создавать тот же результат. Как правило, текущая дата и время не должна быть зарегистрирована и произведена, всегда должен писаться в том же порядке.
набор инструментов раньше выполнял сборку, и в более общем плане среда сборки должна или быть зарегистрирована или предопределена.
пользователям нужно дать способ воссоздать достаточно близкую сборку 3., выполните процесс сборки и проверьте, что вывод соответствует исходной сборке.
Можно найти больше документации обо всем этом здесь.
Относительно того, почему Ubuntu не в настоящее время восстанавливаема, вещи как Perl в настоящее время перестали работать потому что -V
хранит компилятор args для удобства - они ожидают на GCC для исправления этого восходящего потока. Большая эта функциональность могла, просто уничтожил. Некоторые другие проблемы: некоторым страницам справочника и программам скомпилировали даты сборки в, другие компилируют в изменяемых путях к общим библиотекам и т.п..
Не быть восстанавливаемым не проблема или уязвимость. Это просто мешает проверять, что в Вас не вмешались, и в настоящее время что функциональность просматривается как более ценная.
Можно следовать за успехом Debian к детерминизму здесь
Для начала, я не думаю, что Rutkowska говорила о создании установочного носителя детерминировано, но о пакетах (deb, об/мин).
Debian работает над созданием пакетов восстанавливаемо ( https://wiki.debian.org/ReproducibleBuilds), но существует все еще много пакетов, которые не создают тот путь...
Здание целое распределение детерминировано, конечно, является еще большим количеством проблемы.