У меня была такая же проблема в скрипте Ruby, который я написал.
Я генерировал список файлов для передачи в tar при создании архива data.tar.gz. Когда я разархивирую и разархивирую архив вручную, он нормально выкачается, но dpkg потерпит неудачу.
Оказывается, список файлов должен также включать каждый каталог для создания.
Обратите внимание, что когда я создавал data.tar.gz, я собрал его почти с теми же параметрами, что и dpkg-deb / build.c в источнике dpkg-1.15.8.11.
execlp(TAR, "tar", "-cf", "-", "--format=gnu", "--null", "-T", "-", "--no-recursion", NULL);
Вместо этого я использовал
IO.popen("gnutar -czf - --format=gnu -T - --no-recursion", "r+")