Приветствуем всех борцов за чистоту сборки!
Если вы разработчик ПО для Astra Linux Special Edition закаленный в боях с испытательными лабораториями, то наверняка сталкивались с требованиями подготовки повторяемых сборок.
Это когда два раза собрал и опа, одинаковая контрольная сумма!
Что бывает непросто.
Проблема повторяемости сборок давно известна и неплохо решаема в современных дистрибутивах, каковым, надеемся, будет Астра 1.6. А пока имеем то что имеем.
Вот и мы, в канун Дня Победы, в очередной раз воевали за эти самые MD5 ФИКС-UNIX. Для облегчения жизни себе и вам собрали некоторые наработки в отдельный пакет и назвали его dpkg-lab50.
dpkg-lab50
Пакет предоставляет утилиту dpkg-deb для Astra Linux Special Edition, которая собирает пакеты с фиксированным временем изменения файлов в архивах. В зависимости включается пакет dh-strip-nondeterminism, решающий многие проблемы повторяемости сборок.
Для работы необходимо установить время в UNIX-формате в переменной окружения SOURCE_DATE_EPOCH. Типовой пример (вставить в начало файла debian/rules
):
export SOURCE_DATE_EPOCH ?= $(shell dpkg-parsechangelog | grep -Po '^Date: \K.*' | date -f- +%s)
А в последовательность сборки debhelper’а необходимо добавить модуль lab50:
%: dh $@ --with lab50
Последний штрих. Добавьте зависимость для сборки вашего пакета (debian/control
):
Build-Depends: dpkg-lab50
Таки какие проблемы он устраняет, спросите вы?
- Повторяемое время файлов в deb-пакете.
- Коллекция утилиты dh_strip_nondeterminism:
- исправление времени файлов в архивах AR, GZip, JAR/WAR и прочих;
- чистит PNG, Gettext, Javadoc;
- ну и по мелочи.
Где брать?
В нашем репозитории, собран для версий 1.4 и 1.5. Внимание! Тащит за собой нужные зависимости (оттуда же).
Коллеги, а где же пакет в репозитории?
Точно)) Завтра зальем.
Залито.
debhelper бы тоже не помешало обновить, ибо:
Normalizing blah-blah-blah dh_strip_nondeterminism: blah-blah-blah : Undefined subroutine &main::nonquiet_print called at /usr/bin/dh_strip_nondeterminism line 113.
debhelper обновить нельзя, можем исправить ошибку если вышлите полную распечатку на наш электронный адрес.
Что с этим делать?
Настраивается пакет dpkg-lab50 (4) …
Оставляется «отклонение /usr/bin/dpkg-deb в /usr/bin/dpkg-deb.orig из-за dpkg-lab50»
ln: не удалось создать символьную ссылку «/usr/bin/dpkg-deb»: Файл существует
dpkg: ошибка при обработке параметра dpkg-lab50 (—install):
подпроцесс установлен сценарий post-installation возвратил код ошибки 1
Репозиторий для правильной версии Астры?