.png)
저는 Debian 형식의 git 패키지( .deb
)를 빌드하는 스크립트를 작성 중입니다. 이 패키지에는 다음 데비안 패키지가 필요합니다:
cmake, libturbojpeg0-dev, libjpeg62-turbo-dev, libglx-dev, opencl-headers, libgl-dev, libegl-dev, libx11-dev, libxtst-dev, libglu1-mesa-dev, libxcb-keysyms1-dev, libxcb- glx0-dev 및 libx11-xcb-dev
그래서 나는 이것을 사용하고 있습니다 :
for file in cmake libturbojpeg0-dev libjpeg62-turbo-dev libglx-dev opencl-headers libgl-dev libegl-dev libx11-dev libxtst-dev libglu1-mesa-dev libxcb-keysyms1-dev libxcb-glx0-dev libx11-xcb-dev; do apt -y install $file;done
내 질문은 패키지가 설치되어 있는지 확인하고 그렇지 않은 경우 어떻게 설치할 수 있습니까? 이 같은
dpkg -l packagename
설치되어 있으면 다음 단계로 이동하고, 설치되어 있지 않으면 를 사용하십시오 apt -y install
. 감사해요
답변1
mk-build-deps
이를 위해 스크립트를 직접 작성하는 대신 패키지 제어 파일에 빌드 종속성을 나열하고 (또는 패키지 구문 분석 빌드 도구)을 사용해야 합니다.예를 들어 pbuilder
, sbuild
등. ). 바라보다dpkg-checkbuilddeps에 의해 감지된 충족되지 않은 빌드 종속성을 자동으로 설치합니다.더 알아보기.
이를 원하지 않는 경우 원하는 상태를 설명하고 apt
다음 사항을 처리하도록 하세요.
sudo apt-get install --no-install-recommends cmake libturbojpeg0-dev libjpeg62-turbo-dev libglx-dev opencl-headers libgl-dev libegl-dev libx11-dev libxtst-dev libglu1-mesa-dev libxcb-keysyms1-dev libxcb-glx0-dev libx11-xcb-dev
apt
설치된 패키지는 다시 설치되지 않지만 시스템에 구성된 리포지토리에 있는 최신 후보 버전으로 모든 패키지를 업그레이드합니다(이 --no-upgrade
기능은 이 옵션을 사용하여 비활성화할 수 있습니다).
만약 너라면진짜dpkg -l
각 패키지에 대해 실행할 수 있는 스크립트를 직접 작성 하고 필터링 ^ii
하려면 일치하지 않는 패키지를 설치해야 합니다.
for package in …; do
if ! dpkg -l "$package" | grep -q ^ii; then
sudo apt-get install --no-install-recommends "$package"
fi
done
( --no-install-recommends
빌드 종속성에 대해 정확히 원하는 약한 종속성 설치를 건너뛰십시오.)