패키지의 종속성 만 설치하는 방법은 무엇입니까?


45

실행 sudo apt-get install <PACKAGE>하면 패키지, 해당 종속성 및 기타 권장 패키지가 설치됩니다.

그러나 패키지의 종속성 설치 하고 패키지 자체를 제외시키는 방법은 없습니다.

어떻게하면 될까요?


그냥 궁금해서 왜 이러고 싶니?
Kris Harper

@ root45 : 글쎄, 그것은 독특한 상황입니다 : repos에 파이썬 패키지의 소스 코드가 있습니다. 그리고 시작되지 않습니다. 패키지 자체를 설치하지 않고 패키지에 대한 종속성을 설치해야합니다 (이미 코드가 있으므로).
Nathan Osman

1
apt-get install의 dry-run을 수행하고 설치 될 항목을 본 다음 컴파일하는 앱 이외의 모든 것을 설치하면 안됩니까?
duffydack

2
또는 설치 한 다음 응용 프로그램을 제거하십시오 (종속성은 아님). 및 / 또는 업데이트 / 고정 패키지를 빌드 한 후 설치하십시오.
JanC

내 아키텍처를 위해 아직 빌드되지 않은 소스 패키지를 빌드하고 설치할 수 있도록이 기능이 필요합니다. apt-get build-dep빌드 종속성을 설치하므로 apt-get -b source작동하지만 런타임 종속성이 설치되지 않아 dpkg -i *.deb실패합니다.
Trevor Robinson

답변:


24

패키지의 Depends and PreDepends 필드에 모든 패키지가 설치됩니다 :

sudo apt-get install $(apt-cache depends <PACKAGE> | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' ')

기본적으로 모든 종속성을 요청하고 (Pre) Depends를 필터링하고 apt-get에 대한 출력 형식을 지정하십시오.

한 가지 문제는 다음과 같은 종속성입니다.

Depends: pulseaudio
  pulseaudio:i386

또는 가상 패키지

Depends: <java6-runtime-headless>
  default-jre-headless
  openjdk-6-jre-headless

따라서 주의해서 사용하십시오-모든 경우에 작동하지는 않습니다!


1
처리되지 않는 경우가 많이 있습니다. 예를 들어 가상 패키지 (앵글 괄호로 인쇄)에서 완전히 손상됩니다. 예를 보려면 여기를 참조하십시오 : askubuntu.com/questions/25361/…
Trevor Robinson

힌트를 주셔서 감사합니다.하지만 실제로 모든 문제를 처리하는 방법을 잘 모르겠습니다. :-(
htorque

2
내가 AWK를 사용하면 더 간단한 솔루션을 제안하고 싶습니다.sudo apt-get install $(apt-cache depends PACKAGE-NAME-HERE | awk '$1~/Depends/{printf $2" "}')
Sergiy Kolodyazhnyy

1
위에서 언급 한 가상 패키지 문제가 발생했습니다. sed파이프 라인에서 다음으로 업데이트 하면 나를 위해 일했습니다 sed -e "s/.*ends:\ //" -e 's/<[^>]*>//'. 필자의 경우 가상 패키지 < >앞에는 패키지를 만족시키는 패키지가 있으므로 항목을 제거하는 것이 < >좋습니다.
berto

5

apt-get build-dep <package> 트릭을 할 것입니다.


13
패키지에와 함께 설치되지 않는 런타임 종속성이 있기 때문에 작동하지 않습니다 apt-get build-dep.
Nathan Osman

5

복사 / 붙여 넣기가 마음에 들지 않으면로 apt-get 설치를 시뮬레이션하십시오 -s. 이렇게하면 어떤 다른 패키지가 설치 및 / 또는 업그레이드되는지 확인할 수 있습니다. 설치하지 않으려는 패키지 이름과 목록을 제거하면됩니다.

sudo apt-get install -s <package>


4

설치되지 않은 특정 패키지의 모든 종속성을 나열하려면 aptitude

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")'

종속성을 설치하려면

aptitude search '!~i?reverse-depends("^PACKAGE_NAME$")' -F "%p" | xargs sudo apt-get install

  • 종속성을 나열하십시오.

    % aptitude search '!~i?reverse-depends("^mc$")'
    p    mc-data         - Midnight Commander - a powerful file manager -- data files
    
  • 패키지 이름 만 표시

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p"
    mc-data                            
    
  • 예를 들어 종속성을 설치하십시오. mc

    % aptitude search '!~i?reverse-depends("^mc$")' -F "%p" | xargs sudo apt-get install     
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following NEW packages will be installed:
      mc-data
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 1.166 kB of archives.
    After this operation, 5.550 kB of additional disk space will be used.
    Get:1 http://archive.ubuntu.com/ubuntu/ wily/universe mc-data all 3:4.8.13-3 [1.166 kB]
    Fetched 1.166 kB in 0s (1.250 kB/s)
    Selecting previously unselected package mc-data.
    (Reading database ... 606748 files and directories currently installed.)
    Preparing to unpack .../mc-data_3%3a4.8.13-3_all.deb ...
    Unpacking mc-data (3:4.8.13-3) ...
    Processing triggers for doc-base (0.10.6) ...
    Processing 1 added doc-base file...
    Registering documents with scrollkeeper...
    Processing triggers for man-db (2.7.4-1) ...
    Processing triggers for hicolor-icon-theme (0.15-0ubuntu1) ...
    Setting up mc-data (3:4.8.13-3) ...
    

1

이를 위해 apt 설치 시뮬레이션의 출력을 구문 분석 할 수 있습니다. 다음은이를위한 bash 함수입니다.

apt-install-depends() {
    local pkg="$1"
    apt-get install -s "$pkg" \
      | sed -n \
        -e "/^Inst $pkg /d" \
        -e 's/^Inst \([^ ]\+\) .*$/\1/p' \
      | xargs apt-get install
}

용법:

apt-install-depends mopidy

0

종속성 만 설치하려면을 사용할 수 있습니다 apt-cache show package | grep Depends. 이것은 당신에게 의존성 목록을 줄 것입니다 :

apt-cache show apache2 | grep Depends
Depends: apache2-mpm-worker (= 2.2.22-6ubuntu5.1) | apache2-mpm-prefork (= 2.2.22-6ubuntu5.1) | apache2-mpm-event (= 2.2.22-6ubuntu5.1) | apache2-mpm-itk (= 2.2.22-6ubuntu5.1), apache2.2-common (= 2.2.22-6ubuntu5.1)

그런 다음 apt-get을 사용하여 설치할 패키지를 결정할 수 있습니다. aptitude대화식 모드 에서도 패키지를 찾아 선택한 다음 종속성을 설치하십시오.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.