Создание многоарочных пакетов локально

Я впервые пытаюсь собрать пакеты debian/ubuntu для разных архитектур. Для этого я решил использовать pbuilder, используя скрипт.pbuilderrc из https://jodal.no/2015/03/08/building-arm-debs-with-pbuilder/. Затем я использую dpkg-buildpackage -S или же dpkg-source -b для создания.dsc файла. Используя этот файл, я звоню

sudo OS=ubuntu DIST=trusty ARCH=amd64 pbuilder --build $dscfile
sudo OS=ubuntu DIST=trusty ARCH=armhf pbuilder --build $dscfile

Проблема в том, что pbuilder перепаковывает файл.debian.tar.gz (и заменяет его на.xz) и воссоздает файл.dsc. Содержимое двух файлов tar схоже, изменились только разрешения и временные метки, и в файле.dsc я вижу незначительные изменения плюс разные контрольные суммы:

- libpj2 deb comm optional
+ libpj2 deb comm optional arch=any

- b42ddedc2d8b210ec10b4db4271997569aab448d 29942 pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.gz
+ 11646618842914086b78ce0e191f6e2cfbe0965d 25548 pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.xz

Теперь проблема в том, что я не могу поместить результат этих двух сборок в reprepro репозиторий:

#reprepro -Vb . includedsc trusty $dscfile
reprepro -Vb . include trusty /var/cache/pbuilder/ubuntu-trusty-amd64/result/*.changes
reprepro -Vb . include trusty /var/cache/pbuilder/ubuntu-trusty-armhf/result/*.changes

Потому что он не принимает различные контрольные суммы файла.dsc:

File "pool/test/p/pjproject/pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.xz" is already registered with different checksums!
md5 expected: 2f5bcb162dedd309a9d9ecba733d1036, got: bc30e1f502f7b36c10e9709dfe75e60b
sha1 expected: 11646618842914086b78ce0e191f6e2cfbe0965d, got: 94c6ecebe07a93c7505058019b6f64a73a9625a5
sha256 expected: 0642aa4d78b1cc91d06cc6fe406380b76aa7de5fb26105ea052d447f36f65d19, got: cfa085ac5904eadc21a849958118ce597fe03d78fd8cc82f225c33cbcb663462

Мои вопросы сейчас:

  • Как я могу избежать перекомпоновки исходного пакета?
  • Это правдоподобный рабочий процесс для создания таких многоархивных пакетов?
  • Есть ли лучший способ, например, лучший инструмент для кросс-сборки?
  • Я полагаю, что для двоичных пакетов, не зависящих от арки, проблемы аналогичны исходным пакетам. Как я могу интегрировать их в этот рабочий процесс?

1 ответ

Решаемые. Мой рабочий процесс теперь выглядит следующим образом:

Обновить информацию о версии:

dch -i

Сборка исходного пакета:

cd ulxmlrpcpp/
dpkg-buildpackage -S -sa
cd ../

Построить. Обратите внимание, что первый вызов отличается тем, что он также генерирует двоичные файлы arch-indep. Я рекомендую для этого встроенную арку, потому что она самая быстрая, и в случае ошибки вы не тратите время на эмуляцию:

sudo OS=debian DIST=jessie ARCH=amd64 pbuilder --build --pkgname-logfile --debbuildopts '-sa -b' ulxmlrpcpp_1.7.5-2.35.dsc
sudo OS=debian DIST=jessie ARCH=armhf pbuilder --build --pkgname-logfile --debbuildopts -B ulxmlrpcpp_1.7.5-2.35.dsc

Добавьте к репо (только если все вышеперечисленные шаги были успешными):

reprepro -Vb . include jessie ulxmlrpcpp_1.7.5-2.35_source.changes
reprepro -Vb . include jessie /var/cache/pbuilder/debian-jessie-armhf/result/ulxmlrpcpp_1.7.5-2.35_armhf.changes
reprepro -Vb . include jessie /var/cache/pbuilder/debian-jessie-amd64/result/ulxmlrpcpp_1.7.5-2.35_amd64.changes
Другие вопросы по тегам