종속 패키지를 나열하는 방법 (역 종속성)?


201

주어진 패키지를 설치 한 원인을 조사하기 위해 해당 패키지에 의존하는 패키지 목록을 얻고 싶습니다. 에서 분명한 것을 찾을 수 없었습니다 man dpkg.



5
이전 질문의 답변은 모두 aptitude몇 년 동안 기본적으로 설치되지 않은 것입니다. 2017 년에도 우분투의 모든 사람은 여전히 apt-cache. 관련 질문을 따르는 사람은 소수의 프로그램에 대한 토론에서 길을 잃을 것입니다.
Lambart

답변:


252

apt-cache rdepends packagename 당신이 원하는 것을해야합니다


1
우수한! 다른 패키지 (더 이상 사용되지 않음 )에 의해 설치되었다는 의심apt-cache rdepends tofrodos확인했습니다 . dos2unix
l0b0

2
오늘 (apt 버전 0.9.9.1)은 rdepends와 함께 작동하는 --recurse 옵션이 있습니다.
jarno

43
추가 --installed하면 출력은 다른 많은 사람들이 사용할 수있는 패키지에도 유용합니다.apt-cache rdepends --installed packagename
quazgar

2
, 권장 따라 다름 사이에 나를 구별하는 데 도움이 약간 다른 구문, 제안 등의 구문이있다 sudo apt rdepends packagename(APT 캐시 단순히 APT를 사용하지 않는 그것을 통지)
바히드 Pazirandeh

4
출력을 위해 일부 패키지에 세로 막대 (파이프 기호)가있는 이유는 무엇입니까?
Vahid Pazirandeh

62

적성은 이것을 처리하는 상당히 좋은 방법이 있습니다.

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)

기본적으로 "가장 설치된, 가장 강력하고, 가장 짧고, 가장 짧은"이유 만 나열되지만 aptitude -v why찾은 모든 것을 출력하는 데 사용할 수 있습니다 .


4
사용 가능한 모든 패키지가 아니라 설치된 패키지 만 고려하는 것 같습니다. 그리고 그것이 내가 필요한 것입니다.
Tuukka Mustonen

3
이를 위해 당신이 원하는 reverse-dependsubuntu-dev-tools
다니지

데비안은 어때?
Tuukka Mustonen

1
ubuntu-dev-tools는 데비안에있다
tumbleweed

대단하다. 나는 한 달 에 수백 개의 x11 종속성과 수십 개의 쓸모없는 업데이트를 끌어들이는 헤드리스 서버에 openssh-server 권장 되고 설치 되었다는 것을 알았습니다 . 이것이 자동화 된 패키지 관리의 문제입니다! xauth
BaseZen


16

각 방법마다 다른 출력을 표시하는 방법이 두 가지 이상 있습니다.

전체 역방향 종속성 트리에 대한 자세한 내용은 다음을 참조하십시오.

aptitude install apt-rdepends
apt-rdepends -r bash

대안 적으로;

apt-cache showpkg bash

또는 간결한 목록 :

apt-cache rdepends bash

rdepends그 나무에 정확히 무엇을 보여줍니까? apt-rdepends php7.0-fpm보여줍니다 sed. sedPHP FPM은 물론 PHP에 의존하지 않습니다.
Dan Dascalescu

그것은 반대로 의존합니다. PHP가 sed에 의존한다는 것을 의미합니다.
Erik Berkun-Drevnig

1
안녕하십니까, 실제로 "apt-rdepends"는 "재귀 적 종속성"을 나타냅니다. 역방향 재귀 종속성을 원하면 다음을 입력해야합니다.apt-rdepends -r yourPackageNameHere
SebMa

apt-cache 매뉴얼 페이지는 "rdepends는 패키지가 가지고있는 각각의 역 종속성을 보여줍니다"라고 말합니다. @SebMa가 말한 것처럼 apt-rdepends에는 역 종속성을 수행하기 위해 -r 옵션이 필요합니다.
NeilG

8

가장 간단한 옵션은 다음과 같습니다.

apt rdepends package-name

패키지를 설치할 필요가 없습니다.


1
이것이 허용되는 답변에 추가되는 것은 무엇입니까?
l0b0

2
허용 된 답변은이 질문과 관련이 없습니다. 결과는 apt-cache보다 출력이 완전히 다르고 사람이 소비하는 데 더 유용합니다. 대답은 apt-cache가 기본적으로 어느 곳에 나 설치되어 있지 않다는 것입니다.이 답변만으로도이 답변의 목적이 좋은 힌트가 될 것입니다. 마지막으로 이것은 실제로 내가 찾던 대답이므로 모든 다운 투표는 다소 어리 석습니다.
stefanct

이것이 허용되는 버전보다 좋은 이유 중 하나는 출력 과 달리 종속성 버전 이 포함되어 있기 때문 apt-cache입니다. 그것이 바로 지금 필요한 것입니다 (glibc 2.28 비 호환성에 대한 논쟁, 따라서 투표)
Per Lundberg

그냥 apt를 사용하여 공감하십시오. 원래 답변 당시에는이 적절한 솔루션이 유효한지 확신 할 수 없지만 지금이라면 그 방법이 좋습니다.
RobotHumans

7

다른 좋은 답변 외에도 APT / APT-GET -s은 "시뮬레이션 된"제거 (또는 설치)를 수행합니다.

sudo apt -s remove <pkgname>

-s또는 --simulated패키지를 사용하여 패키지를 제거 (또는 설치)하면 일반적으로 영향을받는 모든 종속성이 나열됩니다. 그것은 제거 할 때 패키지를 고아, 또는 실제로을 실행하지 않고 설치시 의존성을 필요로 보여 것 installremove. 정보 제공 용.


apt remove -s php7.0-fpm보여줍니다 The following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0. PHP FPM을 제거하면 아파치가 설치되는 이유는 무엇입니까?
Dan Dascalescu

@DanDascalescu 흠. apt pkg의 잘못된 설치 / 제거 스크립트 일 수도 있고 apache2를 dep로 설치하는 다른 종속성이있을 수도 있습니다 (웹 서버가 필요하다는 것을 의미하며 apache2는 기본 웹 서버라고 생각합니다). 몇 가지 일 수 있습니다. 확실하지 않습니다. 답변을 찾지 못한 경우 AskUbuntu에서 좋은 게시물의 냄새가납니다.
bshea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.