Как я могу запретить dpkg-buildpackage изменять дату модификации каталога / debian при сборке пакета Debian?

Я установил рабочий pbuilder набор инструментов для сборки пакетов Debian в i386 и amd64 разновидностях для Ubuntu. Я использую reprepro для управления своим собственным репозиторием apt и dupload для загрузки в него файлов .changes, .dsc, .deb, .orig.tar.gz и .debian.tar.gz. Все это хорошо задокументировано и работает.

Но я не могу загрузить версию i386 одного пакета вместе с версией amd64 того же пакета. Представитель жалуется следующим сообщением:

File "pool/main/p/package/package_1.0.dsc" is already registered with different checksums!

Источник сгенерированных двоичных пакетов i368 и amd64 точно такой же и не был изменен мной. Как может быть, что существует другая контрольная сумма?

Я исследовал и обнаружил, что разница контрольной суммы файла .dsc заключается в том, что он содержит различную контрольную сумму файла package_1.0.debian.tar.gz.

Дальнейшие исследования показали, что файл package_1.0.debian.tar.gz действительно имеет разные контрольные суммы каждый раз, когда dpkg-buildpackage вызывается набором инструментов сборки Debian. Причина в том, что он изменяет время модификации подкаталога /debian пакета Debian. К сожалению, программа tar включает время модификации в результирующий архив, что приводит к различным контрольным суммам при каждом запуске цепочки инструментов.

Итак, мой вопрос: как я могу запретить dpkg-buildpackage изменять дату модификации каталога /debian при сборке пакета Debian?

Если бы я мог это сделать, то контрольная сумма файлов package_1.0.debian.tar.gz и package_1.0.dsc останутся постоянными, и я могу безболезненно загрузить в reprepro.

3
задан 18 September 2012 в 00:15

3 ответа

Я не совсем в той же ситуации, что и вы, но, надеюсь, мой ответ может указать на то, что вам нужно.

Вместо того, чтобы использовать pbuilder, я в настоящее время использую несколько chroot для сборки пакетов на amd64 и i386. Я генерирую .dsc вне chroot, используя debuild -S, затем копирую соответствующие файлы в chroots. Я понимаю, что это не лучший способ сделать это.

Внутри первого chroot я запускаю dpkg-buildpackage -b для сборки бинарных пакетов. Во втором chroot я запускаю dpkg-buildpackage -B, чтобы собирать только пакеты, зависящие от архитектуры - то есть те, которые не дублируются.

Когда я использую reprepro для отправки пакетов в репозиторий, .debs из первого chroot (i386) с целевым «all» копируются во все архитектуры, а также i386, копируемые в i386. ]. Когда я выталкиваю пакеты из второго chroot (amd64), остальные зависимые от архитектуры debs или amd64 копируются.

0
ответ дан 18 September 2012 в 00:15

Вы можете попробовать переопределить команду tar и добавить к ней аргумент --mtime=some_fixed_time.

0
ответ дан 18 September 2012 в 00:15

Afaict Вы не можете действительно.

debian упаковочная система использует "debian" каталог и в качестве места для хранения длительного срока метаданных пакета и в качестве места для хранения различных артефактов сборки временно во время процесса сборки. Был набор работы над созданием здания Двоичных восстанавливаемых пакетов, но я не услышал ни о каких подобных усилиях для исходных пакетов.

надлежащее решение Ваших ошибок состоит в том, чтобы только создать исходный пакет и дугу все двоичные пакеты однажды. Для pbuilder Вы хотите "-двоичная дуга" опция.

0
ответ дан 21 October 2019 в 09:39

Другие вопросы по тегам:

Похожие вопросы: