Как автоматически удовлетворить зависимости в файлах ".dsc" при сборке пакета debian из исходного кода? - PullRequest
4 голосов
/ 21 января 2012

Когда я загружаю некоторые исходные коды пакета (например, foo- [ver] .orig.tar.gz, foo- [ver] .dsc), я часто сталкиваюсь с проблемой зависимостей при использовании dpkg-source -x foo-[ver].dsc и dpkg-buildpackage -us -uc .... В этом случае я должен установить зависимости здания одну за другой. Есть ли какой-нибудь инструмент для автоматической обработки этого случая, например, dpkg-source-dependencies -x foo-[ver].dsc?

Ответы [ 4 ]

7 голосов
/ 24 января 2012

При попытке собрать пакет следующее должно захватить все зависимости:

apt-get build-dep [package-name]

Кроме того, apt-get может скомпилировать исходные пакеты, если это необходимо:

apt-get --build [package-name]

2 голосов
/ 25 октября 2016

Есть несколько способов сделать это (как видно из других ответов).Для пакета, который уже является частью репозитория, вы можете просто использовать:

apt-get build-dep pkgname

Для локальных пакетов один из:

apt-get build-dep source-dir/
apt-get build-dep source-name.dsc
/usr/lib/pbuilder/pbuilder-satisfydepends* --control source-name.dsc
mk-build-deps --install source-name.dsc
pbuilder build source-name.dsc
sbuild source-name.dsc

Возможно, есть другие решения, нонаиболее широко используются.

2 голосов
/ 21 января 2012

pbuilder просто инструмент для этой работы. pbuilder установит минимальный дистрибутив в тарболе после установки. Для создания файла .dsc вы предоставляете файл, а pbuilder распаковывает архив, chroot s, устанавливает все необходимые зависимости сборки и компилирует пакет. В результате этой процедуры ваш результат сборки не зависит от текущей конфигурации хост-машины.

0 голосов
/ 14 ноября 2013

Я извлекаю Build-Depends из debian / control и затем устанавливаю их с помощью apt. Несколько стандартных пакетов не упоминаются как Build-Depends (например, build-essentials) и требуются без вывода сообщений от debuild.

pkgs=$(grep Build-Depends debian/control|sed 's/^Build-Depends: //g)
pkgs=$(echo $pkgs|sed "s/[() ]//g"|tr "," " ")
apt-get install $pkgs build-essential
...