Как собрать пакет с исходным кодом `pbuilder` для загрузки PPA?
Я пытаюсь использовать pbuilder
загрузить в PPA. Пакет собирается нормально с помощью команды:
sudo pbuilder build <package>_<version>.dsc
Но загрузка не удалась с ошибкой:
Source/binary (i.e. mixed) uploads are not allowed.
Говорят, что мне нужно использовать pdebuild
строить source package
, но pdebuild
не разрешает зависимости сборки. Как я могу собрать этот пакет, чтобы он мог быть окончательно загружен? Я не хочу устанавливать зависимости вручную.
2 ответа
Ответ в том, что вы этого не делаете. pbuilder
принимает пакет с исходным кодом и создает двоичные файлы Он также может взять исходный код без встроенного исходного пакета и создать двоичные файлы, которые вы либо разместите сами, либо добавите в свои собственные системы репозитория debian для размещения самостоятельно.
Это не то, что вам нужно для PPA.
Что вы хотите сделать, и что я настоятельно рекомендую, так это следовать традиционным процедурам упаковки и выполнять debuild -S
в коде, с каталогом для пакета, содержащего исходный код, debian/
папка и все остальное.
Затем, после того как вы создали debuild -S
Вы можете загрузить созданное .changes
файл в одном каталоге над исходным каталогом к PPA через dput
, (этот шаг упоминается в справочной документации по загрузке PPA на Launchpad).
Вы можете в теории использовать pdebuilder
чтобы сохранить вашу систему в чистоте и построить внутри chroot, но читайте мои заявления по этому поводу, чтобы узнать, почему она ранее не сработала для вас.
По комментариям вы правильно определили, что debhelper не может найти autoreconf
плагин.
Также, как я сказал в моих комментариях к этому ответу, pbuilder
а также pdebuilder
оба недостаточно умны, чтобы определить зависимости debhelper.
Чтобы решить вашу проблему, чтобы ваши вещи могли строить, вам придется использовать вручную pbuilder
или же pdebuilder
чтобы войти в chroot. Затем вам придется вручную установить dh-autoreconf
в chroot, обычно с apt-get install dh-autoreconf
после того как вы вошли в chroot.
После того как вы сделали это и сохранили состояние chroot, вы сможете pbuilder
или же pdebuilder
ваш пакет
(Однако я предпочитаю традиционно работать с пакетами, и мне все равно, полностью ли чиста моя система сборки, все, что я на самом деле собираю, это пакеты с исходным кодом, и плагины debhelper не будут сильно мешать моей системе)
pbuilder
используется для сборки бинарных пакетов из исходного пакета. PPA также создает двоичные пакеты из исходных пакетов. Просто dput
source.changes
файл, который вы создали, когда вы также создали <package>_<version>.dsc
файл.
Один из главных моментов в использовании pbuilder
локально имитировать чистую среду chroot, которая используется для сборки бинарных пакетов как в официальных архивах, так и в PPA.