dpkg-checkbuilddeps에 의해 감지된 충족되지 않은 빌드 종속성을 자동으로 설치합니다.

dpkg-checkbuilddeps에 의해 감지된 충족되지 않은 빌드 종속성을 자동으로 설치합니다.

dpkg-checkbuilddeps나열된 모든 충족되지 않은 빌드 종속성을 설치하는 명령이 있습니까 ?

sed출력하고 공급해 보았지만 apt-get install진부해 보이고 어떤 이유로 일부 환경에서는 작동하지 않습니다.

sudo apt-get install --yes $(dpkg-checkbuilddeps | sed 's/([^)]*)//g' | sed 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies://g')

더 좋은 방법이 있나요?

답변1

나는 패키지 mk-build-deps에 있는 것을 사용합니다 devscripts(당신도 필요합니다 equivs).

mk-build-deps

패키지는 제어 파일의 모든 빌드 종속성을 기반으로 빌드 됩니다 debian/control. 그런 다음 를 사용하여 패키지를 설치할 수 apt있으며 누락된 종속성도 설치됩니다.

이 접근 방식의 장점은 종속성 패키지가 제거되면 제거할 수 있는 모든 빌드 종속성도 식별된다는 것입니다.

수동 단계를 줄이려면 다음 명령을 사용할 수 있습니다.

mk-build-deps --install --root-cmd sudo --remove

최종 결과는 모든 빌드 종속성이 설치되지만 새로 생성된 빌드 종속성 패키지 자체는 설치되지 않는다는 것입니다. 패키지가 설치되고( --install) 해당 종속성이 모두 제거되지만( --remove) 종속성은 그대로 유지됩니다.

답변2

다음을 시도해 보십시오:

dpkg-checkbuilddeps 2>&1 | sed 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies: //g' | sed 's/[\(][^)]*[\)] //g'

먼저 dpkg-checkbuilddeps오류를 stderrnot 에 인쇄합니다 stdout. 따라서 stdout파이프를 사용하려면 리디렉션이 필요합니다.

이것이 방법이다리디렉션 stderrstdoutBash

([^)]*)다음에서 정규식을 사용했습니다 .

sed 's/([^)]*)//g'

하지만 다음과 같아야 합니다.

sed 's/[\(][^)]*[\)]//g'

인용하다:sed를 사용하여 대괄호 사이의 문자열을 삭제하세요.

답변3

이전에 언급한 두 가지 방법을 결합하면 나에게 효과적이었습니다.

sudo apt-get install \
    --yes $(dpkg-checkbuilddeps 2>&1 | sed -e 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies: //g' -e  's/[\(][^)]*[\)] //g')

관련 정보