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


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.