apt-get (또는 다른 dpkg의 다른 프론트 엔드)을 사용하여 패키지를 직접 설치 한 다음 즉시 제거하고 종속성을 제거하지 않고 패키지의 필수 종속성 만 설치하는 더 좋은 방법이 있습니까?
apt-get (또는 다른 dpkg의 다른 프론트 엔드)을 사용하여 패키지를 직접 설치 한 다음 즉시 제거하고 종속성을 제거하지 않고 패키지의 필수 종속성 만 설치하는 더 좋은 방법이 있습니까?
답변:
apt-get은 정확히 그 명령을 제공합니다 ...
apt-get build-dep <package name>
당신이 얻는 맨 페이지에서
build-dep는 apt-get이 소스 패키지의 빌드 종속성을 충족 시키려고 패키지를 설치 / 제거하도록합니다. 기본적으로 종속성은 기본적으로 패키지를 빌드하기 위해 충족됩니다. 원하는 경우 --host-architecture 옵션을 사용하여 호스트 아키텍처를 지정할 수 있습니다.
aptitude를 사용하면 설치시 패키지 이름 대신 쿼리를 지정할 수 있습니다. 이라는 패키지의 종속성을 설치하려면 다음과 foo
반대로 종속성이있는 패키지를 설치할 수 있습니다 foo
.
aptitude install '?reverse-depends(foo)'
또는
aptitude install '~Rfoo'
패키지를 설치 한 다음 제거 할 때의 문제점은 종속성으로 설치되는 모든 패키지가 "자동으로 설치됨"으로 표시되며 적시에 의해 또는 설치 apt-get autoclean
하지 않은 경우 설치 / 제거 / 업그레이드 작업에 의해 제거되거나 aptitude mark
또는 apt-mark
명령을 사용하여 수동으로 설치 한 것으로 표시 하십시오 .
그러나 이것은 왜 당신이 이것을하고 싶은지에 대한 의문을 제기합니다. 내 최선의 추측은 당신이 직접 컴파일 할 일부 소프트웨어에 대한 종속성을 설치하려고한다는 것입니다. 이 경우 먼저 빌드 종속성을 설치 apt-get build-dep packagename
하지만 equiv
패키지를 사용하여 올바른 종속성이있는 더미 패키지를 빌드 하여 런타임 종속성이있는 더미 패키지를 작성해야합니다 (일반적으로 빌드 종속성과 다름). 수동으로 컴파일 한 프로그램 에 대한 정보를 볼 수 equivs
에 APT는 HOWTO
build dependencies
과 (와) 의 차이가 없었dependencies
습니까? 마찬가지로 일반적으로 프로그램을 설치하면 실제로 실행 해야하는 종속성이 생기고 빌드 종속성을 사용하면 라이브러리, 컴파일러 등에 대해 더 많이 생각합니다. 그래서 확실하지 않지만 (이 답변에는 공감대가 있지만) 빌드 종속성을 얻는 것이 패키지가 가지고있는 (실행) 종속성을 얻는 것과 같은 것은 사소한 것이 아닌 것 같습니다.