Если ответить кратко, то процитирую lists.debian.org:
>> >> dpkg-checkbuilddeps: Unmet build dependencies: python-all cdbs docbook-xsl >> >> W: Unmet build-dependency in source >> >> ... >> >> >> >> How can I make pbuilder fetch these required dependencies? > > pbuilder does install the necessary dependencies. But it does so > *inside* the chroot. But before it runs the "clean" target in the > debian rules file. So you need the build-dependencies at your system > too. But there pdebuild won't install them. You have to change the > pdebuild action orders: > > [snip] >> dpkg-checkbuilddeps: Unmet build dependencies: python-all cdbs docbook-xsl >> dpkg-buildpackage: warning: Build dependencies/conflicts unsatisfied; >> aborting. >> ... > > Read about the --use-pdebuild-internal switch: > http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html#pdebuild
Если ответить развернуто. Без использования --use-pdebuild-internal
выполнение pdebuild
приводит к выполнению следующего набора команд
if ! dpkg-checkbuilddeps -B ; then log "W: Unmet build-dependency in source" fi echo "dpkg-buildpackage -S -us -uc -r${BUILDSOURCEROOTCMD} $DEBBUILDOPTS" | \ perl -pe 's/(^|\s)-[AbBF](\s|$)/$1$2/g' | \ /bin/bash ${PBUILDERROOTCMD} \ ${PDEBUILD_PBUILDER} \ --build \ ${EXTRA_CONFIGFILE[@]/#/--configfile } \ --buildresult "${BUILDRESULT}" \ --debbuildopts "" \ --debbuildopts "${DEBBUILDOPTS}" \ "$@" \ ../"${PKG_SOURCENAME}_${PKG_VERSION}".dsc
Таким образом pdebuild
изначально проверяет присутствие зависимостей пакета на основной системе через вызов dpkg-checkbuilddeps -B
. В случае не успешного завершения выполнение ограничивается исключительно предупреждением и продолжением выполнения сценария.
После этого предпринимается отчаянная попытка создания исходного (source) набора файлов вызовом команды dpkg-buildpackage -S -us -uc
. Только в случае успешного завершения этого этапа будет выполнена команда pbuilder --build ... *.dsc
, которая соберет в чистом chroot
окружении пакет.
Подвох кроется в выполнении команды dpkg-buildpackage -S -us -uc
, которая на одном из своих этапов выполняет команду в основной системе
fakeroot debian/rules clean
Для успешного завершения которой требуется установка всех Build-Dep на основной системе.
Необходимое лекарство кроется в $HOME/.pbuilderrc
USE_PDEBUILD_INTERNAL=yes
или указании ключа --use-pdebuild-internal
при каждом запуске pdebuild
.