既存の_/debian/
_フォルダーと_/debian/control
_ファイルが含まれているソースコードフォルダーをダウンロードしたとします。
問題のパッケージがDebian公式リポジトリにないため、_apt-get build-dep
_を使用できないとしましょう。
_Build-Depends:
_行を解析する方法は?
たとえば、行がBuild-Depends: debhelper (>= 8), faketime
を読み取る場合、_control-parse debian/control build-depends
_をエコーするツール_debhelper faketime
_はありますか?
特にマルチラインの時は?
既存のDebianツールはありますか、またはこれを解析するための独自のコードを作成するツールがありますか?
dpkg-checkbuilddeps
。マンページは言う
このプログラムは、システムにインストールされているパッケージを、制御ファイルにリストされているビルドの依存関係およびビルドの競合と照合します。満たされていないものがある場合は、それらを表示し、ゼロ以外の戻りコードで終了します。
例えば:
faheem@orwell:/usr/local/src/Julia/julia-0.3.2$ dpkg-checkbuilddeps
dpkg-checkbuilddeps: Unmet build dependencies: libopenblas-dev (>= 0.2.10-1~) libopenlibm-dev libopenspecfun-dev (>= 0.4~) patchelf python-sphinx-rtd-theme
ただし、(たとえば)debuild
を使用して、パッケージをビルドしてみることもできます。
faheem@orwell:/usr/local/src/Julia/julia-0.3.2$ debuild -uc -us
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package Julia
dpkg-buildpackage: source version 0.3.2-1
dpkg-buildpackage: source changed by Sébastien Villemot <[email protected]>
dpkg-source --before-build Julia-0.3.2
dpkg-buildpackage: Host architecture AMD64
dpkg-checkbuilddeps: Unmet build dependencies: libopenblas-dev (>= 0.2.10-1~) libopenlibm-dev libopenspecfun-dev (>= 0.4~) patchelf python-sphinx-rtd-theme
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
debuild: fatal error at line 1357:
dpkg-buildpackage -rfakeroot -D -us -uc failed
同じ情報を提供します(dpkg-checkbuilddeps
)ですが、少しうるさいです。
解析:
libdpkg-Perl
のモジュールを使用します(dpkg-checkbuilddeps
はこれらのモジュールを内部で使用します)
次の行をprint-build-deps
に追加し、ソースパッケージルートでprint-build-deps
を実行します。
#!/usr/bin/Perl
use strict;
use warnings;
use Dpkg::Control::Info;
use Dpkg::Deps;
my $control = Dpkg::Control::Info->new();
my $fields = $control->get_source();
my $build_depends = deps_parse($fields->{'Build-Depends'});
print deps_concat($build_depends) . "\n";
以下も参照してください。
perldoc Dpkg::Control::Info
perldoc Dpkg::Deps
インストール:
devscripts
のmk-build-deps
を使用できます。
apt-get install devscripts
apt-get install equivs
cd project-root # project-root contains debian/control
mk-build-deps -i
man mk-build-deps
さんのコメント:
mk-build-deps - build a package satisfying a package's build-dependencies
-i, --install
Install the generated packages and its build-dependencies
このPerlワンライナーを使用して、debian-control
からの依存関係を解析できます。
Perl -ne 'next if /^#/; $p=(s/^Build-Depends:\s*/ / or (/^ / and $p)); s/,|\n|\([^)]+\)//mg; print if $p' < debian/control
または
Perl -ne 'next if /^#/; $p=(s/^Depends:\s*/ / or (/^ / and $p)); s/,|\n|\([^)]+\)//mg; print if $p' < debian/control