/debian/
既存のフォルダとファイルを含むソースコードフォルダをダウンロードしたとします/debian/control
。
問題のパッケージは公式のDebianリポジトリにないため、apt-get build-dep
利用できないと想定されます。
この行を解析する方法はBuild-Depends:
?
たとえば、行を読むと再エコーできるBuild-Depends: debhelper (>= 8), faketime
ツールがありますか?control-parse debian/control build-depends
debhelper faketime
特にマルチスレッドの場合は?
既存のDebianツールはありますか?それともそれを解析するために独自のコードを書くことができますか?
答え1
分析:
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
取付ける:
あなたはmk-build-deps
それを使用することができますdevscripts
:
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
答え2
使用できます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
が、少し騒々しいです。
答え3
この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