패키지가 설치된 이유를 알 수 있습니까?


112

특정 패키지의 경우 패키지가 설치된 이유를 알 수 있습니까?

그렇다면 수동으로 설치되었거나 다른 패키지의 종속성으로 설치되었는지 볼 수 있습니까? 아니면 배포판의 일부로 설치 되었습니까?


이것은 질문 과 관련이 있으며 자세한 내용 은이 답변 을 참조하십시오.
koushik

: 여기에 2017에 대한 더 나은 답변을 askubuntu.com/questions/128524/...
Lambart

답변:


107

빠른 해결책은 터미널에 다음 명령을 입력하는 것입니다.

aptitude why $package

또는 궁극적 인 원인에만 관심이있는 경우 :

aptitude why $package --show-summary

교체 $ 패키지를 패키지의 이름으로, 당신은 설치해야 할 수 있습니다 aptitude첫 번째 패키지를.

다음은 얻을 수있는 출력입니다. aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

자세한 내용은을 실행하십시오 aptitude why aspell. "당신은 수동으로 설치 : 당신은 예를 들어, 출력, 다음과 같이 아래 읽을 수있는 inkscape필요, libgtkspell요구, libenchantic2a요구하는을 aspell". ( i마커는 설치된 패키지를 A나타내고 마커는 자동으로 설치된 패키지를 나타냅니다.)

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

마지막으로 다음 명령

apt-cache rdepends --installed $package

$ package 에 직접 의존하는 컴퓨터에 설치된 다른 패키지를 나열합니다 . --recurse직접 또는 간접적으로 의존하는 모든 패키지를 나열 하는 옵션을 추가 할 수 있습니다 .


동정의 적성은 기본적으로 포함되지 않습니다 :(
badp

1
@ badp 지적 해 주셔서 감사합니다. 이것은 maverick의 나쁜 새로운 기능으로 livecd iso 이미지의 일부 공간 만 절약합니다. 그러나 그것은 귀중한 도구이며, 나는없이 가지 않을 것입니다.
enzotib

15
apt-cache rdepends --recurse $package아마도 너무 많은 패키지를 제공합니다. --installed설치된 패키지로 제한하는 옵션을 추가 합니다. -i옵션은 사전 종속성 및 종속성 관련 패키지로 제한합니다. 그러나 다른 패키지에서 권장하기 때문에 패키지를 설치할 수 있습니다. 이러한 권장 관련 패키지를 포함시키기 위해 이것이 올바른 패키지를 제공한다고 가정합니다.apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
jarno

4
괄호 확장이있는 배쉬 또는 다른 쉘에 있다고 가정하면 @jarno의 주문과 약간 짧습니다.apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
akavel

30

터미널 ( Applications -> Accessories -> Terminal) 에 다음 명령을 입력하여 특정 패키지가 설치된 이유에 대한 빠르고 간단한 추론을 찾을 수 있습니다 .

aptitude why <package-name>

관심있는 패키지 이름으로 바꾸십시오. 예를 들어, 입력 aptitude why libgoo-canvas-perl하면 다음이 출력 됩니다 .

i   shutter Suggests libgoo-canvas-perl

이것은 기본적 shutter으로이 경우 패키지 libgoo-canvas-perl설치 가 제안 되었음을 의미합니다 . 그런 다음 입력 aptitude why shutter하여 종속성 체인을 걸을 수 있습니다.

그러나 경고가 있습니다. 나는 적성이 실제 상황이 아닐 수도있는 상황에 대한 가장 그럴듯한 설명을 찾는다는 것을 종종 알지만 그럼에도 불구하고 더 자세히 볼 수있는 단서를 줄 것입니다.

필자의 경우 shutter제안 libgoo-canvas-perl하지만 제안 된 패키지는 기본적으로 자동 설치되지 않습니다. 그럼에도 불구하고,이와 스크린 샷을 편집 할 수없는 함께 "경험"의 내 기억 조그 shutter수동으로 설치하라고했다ligbgoo-canvas-perl

마지막으로, 다음 명령을 실행하여 패키지가 자동으로 설치되었는지 (패키지 관리 시스템에 의해 설치하도록 요청한 다른 패키지의 종속성 및 권장 사항을 보지 않고 필수로 결정 함) 여부를 확인할 수 있습니다.

aptitude show <package-name>

다음과 같은 줄이 출력됩니다 (출력의 세 번째 줄).

Automatically installed: no

자세한 정보 info aptitude는 터미널에서 실행 하거나 Aptitude wiki 페이지를 방문 하십시오.

특정 패키지가 설치된 시기 를 확인하려면 다음 두 가지 옵션이 있습니다.

  1. 시냅틱 패키지 관리자는 모든 활동의 기록 로그를 유지합니다. 기록 로그 파일을 보려면 파일 메뉴에서 기록을 선택하십시오. Install설치와 관련된 모든 항목을 나열하기 위해 (사례를 염두에두고) 검색 할 수 있습니다 . 그러나 Synaptic을 사용하여 설치된 패키지 만 표시됩니다
  2. 터미널에서 다음 명령을 실행하십시오. 설치 기록 항목에 대한 dpkg 로그를 검색합니다. 그러나 이러한 로그의 보유량에는 최대 제한이 있으므로 찾고있는 패키지를 오래 전에 설치 한 경우 찾을 수 없습니다. 자세한 내용은 여기

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    

1
패키지가 설치 또는 업그레이드 된시기를 확인하려면zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Chris Good

@ChrisGood : 똑똑한 따옴표없이 의견을 다시 입력 할 수 있습니까?
Dan Dascalescu

1
지적 해 주셔서 감사합니다. 올바른 큰 따옴표로 : zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep "\ install \ | \ upgrade \"
Chris Good

12

예, 가능합니다. 사실 그것은 명백한 명령입니다. 적성을 설치했다고 가정하면 터미널 창 광고 유형을 열 수 있습니다.

aptitude why package

특정 패키지에 의존하는 패키지 목록을 제공해야합니다. 수동으로 설치된 패키지 인 경우 "패키지를 설치할 이유를 찾을 수 없습니다"와 같은 메시지가 표시됩니다.


5

여기에 의존하지 않는 간단한 방법 aptitude이 있습니다 .10.10은 더 이상 기본적으로 제공되지 않습니다.

그래픽으로

시냅틱을 열고 제거하십시오.

다른 패키지를 삭제하라는 대화 상자가 나타나면 해당 패키지가 (재귀 적으로) 종속 된 패키지입니다.

터미널에서

apt-get remove package_name_goes_here -s

다시, 결과적으로 제거 될 패키지는 (재귀 적으로) 의존하는 모든 패키지입니다. ( -s매개 변수는 apt-get패키지를 실제로 제거하지 않도록 지시 합니다.)


2
이것은 패키지와 모든 종속성이 잘못 클릭되면 실제로 제거 할 수 있기 때문에 위험한 솔루션입니다.
ImaginaryRobots

1
@ImaginaryRobots, 그건의 많은 misclicking의는. (첫 번째 대화 상자에서 Ok를 클릭하고 확인 대화 상자에서 Ok를 다시 클릭해야합니다.) 터미널 버전의 경우 y/N오타가 있으면 추가 확인 요청도 있습니다 -s. 그러나 경고를 추가했습니다.
badp

1
이 정보는 패키지의 속성을 볼 때 종속성 탭의 Synaptic에서 사용할 수 있으므로 -1입니다.
alexanderpas

@alex 잘못-대화 상자에서 해당 패키지가 수동 또는 자동으로 설치되었는지 여부를 알려줍니다. 추신 :받은 편지함 카운터를 재설정하십시오.
badp

@badp 아니오, 그러나 해당 정보는 기본 화면의 "설치됨 (수동)"상태 필터에서 찾을 수 있으며 패키지를 선택할 때 패키지 메뉴에서 볼 수 있습니다.
alexanderpas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.