재귀 종속성 검사와 역방향 종속성 검사의 차이점은 무엇입니까?

재귀 종속성 검사와 역방향 종속성 검사의 차이점은 무엇입니까?

소프트웨어 종속성에 대해 제가 이해한 바는 패키지에 종속성이라고 하는 다른 패키지를 설치해야 할 수도 있다는 것입니다. 나무와 같은 결과가 나옵니다. 패키지가 공통 종속성을 공유하는 경우도 있지만 패키지는 한 번만 설치하면 됩니다.

                                        |패키지 D
                  |패키지 B--------->|
                  |패키지 E
패키지 A -------->|
                  |패키지 F
                  |패키지 C--------->|
                                        |패키지 B

나는 최근에풀어 주다패키지의 종속성을 찾는 방법에 대해 AskUbuntu.com에 질문했는데, 이 작업을 수행하는 모든 방법이 다른 결과를 가져왔습니다. 그 이유는 일부 메소드가 단순히 종속성을 나열하는 것이 아니라 재귀 검사를 수행하는 메소드도 있고 역방향 검사를 수행하는 메소드도 있기 때문입니다.

역방향 종속성 검사와 재귀 종속성 검사의 차이점은 무엇입니까?

편집하다:

용어에 대한 참조. 나는 APT에 대해 게시한 주제에 대한 댓글에서 처음으로 이에 대해 들었지만 종속성 검사를 수행하는 데 사용할 수 있는 여러 프로그램과 해당 맨페이지에서 사용됩니다.

apt-cache rdependents는 역방향 종속성을 찾고 있으며, 내 스크립트와 apt-rdependents는 재귀적으로 종속성을 찾고 있습니다.
r은 패키지에 따라 다릅니다.
           rdependents는 패키지에 있는 모든 역방향 종속성의 목록을 표시합니다.
apt-rdependents - 다음과 유사한 재귀 종속성 목록을 수행합니다.
       적절한 캐시

답변1

반전은 다음에 달려있다

역방향 종속성은 특정 패키지에 의존하는 패키지 목록이 필요함을 의미합니다.

$ apt-cache rdepends jetty
jetty
Reverse Depends:
  solr-jetty
  libjetty-java
  libjetty-extra-java
  libjetty-extra
  libini4j-java
  guacamole

재귀적 종속성

apt-rdepends특정 패키지가 의존하는 패키지와 해당 패키지도 의존하는 패키지를 표시하는 것과 같은 도구를 사용하십시오 . 이는 전체 종속성 트리가 고갈될 때까지 반복적으로 수행됩니다.

$ apt-rdepends jetty | head -10
Reading package lists... Done
Building dependency tree       
Reading state information... Done
jetty
  Depends: adduser
  Depends: apache2-utils
  Depends: default-jre-headless
  Depends: java5-runtime-headless
  Depends: jsvc
  Depends: libjetty-java (>= 6.1.26-1ubuntu1)
adduser
  Depends: debconf
  Depends: debconf-2.0
...

jetty위에서 는 가 에 의존하고, adduser그 자체는 에 의존한다는 것을 알 수 있습니다 debconf.

역재귀 종속성

이는 어떤 패키지가 패키지에 종속되고, 해당 패키지가 해당 패키지에 종속되는지를 보여줍니다. 이번에도 재귀적으로 수행됩니다.

$ apt-rdepends --reverse jetty 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
jetty
  Reverse Depends: solr-jetty (>= 3.6.1+dfsg-0ubuntu2)
solr-jetty
  Reverse Depends: chef-solr (>= 10.12.0+dfsg-1)
chef-solr
  Reverse Depends: chef-expander (>= 10.12.0-1)
  Reverse Depends: chef-server-api (>= 10.12.0-1)
chef-expander
chef-server-api
  Reverse Depends: chef-server-webui (>= 10.12.0+dfsg-1)
chef-server-webui

여기서도 트리를 탐색할 때 jetty종속성으로 나열된 첫 번째 패키지는 이고 solr-jetty, 이 패키지는 종속성 chef-solr등으로 나열됩니다.

종속성 유형

다소 혼란스러울 수 있지만 여러 가지 종속 요소가 있습니다. 매뉴얼 페이지를 확인하십시오 apt-rdepends.

   -f, --follow=DEPENDS
        A comma-separated list of DEPENDS types to follow recursively. 
        By default, it only follows the Depends and PreDepends types.

        The possible values for DEPENDS are: Depends, PreDepends, Suggests,
        Recommends, Conflicts, Replaces, and Obsoletes.

        In --build-depends mode, the possible values are: Build-Depends, 
        Build-Depends-Indep, Build-Conflicts, Build-Conflicts-Indep.

관련 정보