РепреП жалуется на сгенерированный архив pbuilder debian.tar.gz md5
Я настроил частный репозиторий APT (используя ресурсы в Интернете, такие как http://inodes.org/2009/09/14/building-a-private-ppa-on-ubuntu/), и я впервые загружаю свой пакет, содержащий источники моего приложения C++. Так что репозиторий реппро пуст.
Я использую следующую команду, чтобы начать сборку:
sudo reprepro -V -b /srv/reprepro processincoming incoming
Затем начинается сборка, генерируется много выходных данных, и я вижу, что pbuilder
компилирует исходный код проекта, и все в порядке. Я даже могу найти в result/
папки Debian и т. д.
Но сборка завершилась неудачно с POST_BUILD_FAILED, потому что кажется, что pbuilder изменил файл douane-testing_0.8.1-apt1.debian.tar.gz и сумма md5 теперь отличается, как показано здесь:
File "pool/main/d/douane-testing/douane-testing_0.8.1-apt1.debian.tar.gz" is already registered with different checksums!
md5 expected: 97257ae2c5790b84ed7bb1b412f1d518, got: df78f88b97cadc10bc0a73bf86442838
sha1 expected: ae93c44593e821696f72bee4d91ce4b6f261e529, got: d6f910ca5707ec92cb71601a4f4c72db0e5f18d9
sha256 expected: c3fac5ed112f89a8ed8d4137b34f173990d8a4b82b6212d1e0ada1cddc869b0e, got: ebdcc9ead44ea0dd99f2dc87decffcc5e3efaee64a8f62f54aec556ac19d579c
size expected: 2334, got: 2344
There have been errors!
Я не понимаю, почему происходит сбой, потому что, когда я сравниваю 2 пакета (с этими суммами md5), содержимое строго одинаково (я использовал инструмент сравнения, но без различий и без новых или удаленных файлов). Единственное, что я вижу, это то, что архив из pbuild больше на 10 байт, чем оригинальный, который я загрузил:
На моей машине для разработки файл с md5 97257ae2c5790b84ed7bb1b412f1d518:
-rw-r--r-- 1 zedtux zedtux 2334 Feb 3 23:38 douane-testing_0.8.1-apt1.debian.tar.gz
На моем сервере файл с md5 df78f88b97cadc10bc0a73bf86442838:
-rw-r--r-- 1 root root 2344 Feb 5 00:58 douane-testing_0.8.1-apt1.debian.tar.gz
У меня pbuild версии 0.213 на моем сервере.
В чем может быть причина такого поведения и как я могу это исправить?
редактировать
Я подозреваю, что проблема с ключом GPG, который выглядит отсутствующим, а затем файлы не подписаны, поэтому md5 sum отличается. В процессе сборки у меня есть следующие строки:
I: Extracting source
gpgv: Signature made Wed Feb 5 22:04:37 2014 UTC using RSA key ID 9474CF36
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./douane-testing_0.8.1-apt1.dsc
Редактировать 2
Я попытался найти команду для создания вручную.debian.tar.gz файл. Лучшее, что я нашел, это следующее:
tar cv debian | gzip --no-name --rsyncable -9 > douane-testing_0.8.1-apt1.debian.tar.gz
Я не получаю тот же результат, чем dpkg-source
но я попробовал ту же команду на моем сервере (я должен по крайней мере иметь тот же размер), но она не соответствует...
Может ли быть так, что Debian и Ubuntu сжимаются не одинаково?
2 ответа
Мой предыдущий ответ в порядке, но не является полным.
Затем у меня возникла проблема, которая представляет недобросовестную версию исходного архива (.orig.tar.xz). Но это было нормально, так как я не делал пакеты правильно.
Я написал скрипт bash, который я выполняю в ВМ для каждой серии Ubuntu. Этот скрипт всегда делал все с нуля, использовал аргумент dh_make --createorig, и вот в чем проблема.
Правильный способ - сгенерировать один раз (например, для точной версии Ubuntu), а затем повторно использовать файл.orig.tar.xz и больше не использовать аргумент --createorig в dh_make.
Я надеюсь, что это может кому-то помочь:-)
Наконец, после нескольких вечеров исследований, я нашел решение на launchpad.net!
Нашел решение. По умолчанию pbuilder вызывает dpkg-buildpackage примерно так:
DEBBUILDOPTS = "$ DEBBUILDOPTS -rfakeroot" dpkg-buildpackage -us -uc $ DEBBUILDOPTS
Это заставляет dpkg-buildpackage перестраивать файлы diff.gz и.dsc. Добавьте туда -b, и этого не будет. Это также означает, что полученный файл.changes будет ссылаться только на файл.deb. Что ты хочешь, я думаю.
Самое простое решение - добавить строку в ваш.pbuilderrc:
DEBBUILDOPTS = "-" б