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
오류를 stderr
not 에 인쇄합니다 stdout
. 따라서 stdout
파이프를 사용하려면 리디렉션이 필요합니다.
이것이 방법이다리디렉션 stderr
및 stdout
Bash
([^)]*)
다음에서 정규식을 사용했습니다 .
sed 's/([^)]*)//g'
하지만 다음과 같아야 합니다.
sed 's/[\(][^)]*[\)]//g'
답변3
이전에 언급한 두 가지 방법을 결합하면 나에게 효과적이었습니다.
sudo apt-get install \
--yes $(dpkg-checkbuilddeps 2>&1 | sed -e 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies: //g' -e 's/[\(][^)]*[\)] //g')