debian/control에서 빌드 종속성을 설치/해결하는 방법은 무엇입니까?

debian/control에서 빌드 종속성을 설치/해결하는 방법은 무엇입니까?

/debian/기존 폴더와 파일이 포함된 소스 코드 폴더를 다운로드했다고 가정해 보겠습니다 /debian/control.

문제의 패키지는 공식 데비안 저장소에 없으므로 apt-get build-dep사용할 수 없는 것으로 가정됩니다.

이 줄을 구문 분석하는 방법은 무엇입니까 Build-Depends:?

예를 들어, 줄이 읽으면 다시 에코할 수 있는 Build-Depends: debhelper (>= 8), faketime도구가 있습니까 ?control-parse debian/control build-dependsdebhelper 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. 맨 페이지에 다음과 같은 내용이 있습니다.

이 프로그램은 제어 파일에 나열된 빌드 종속성 및 빌드 충돌과 비교하여 시스템에 설치된 패키지를 확인합니다. 만족하지 않는 항목이 있으면 이를 표시하고 0이 아닌 반환 코드로 종료됩니다.

예를 들어:

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 

관련 정보