"apt-get dist-upgrade" 정의 혼란

"apt-get dist-upgrade" 정의 혼란

에 따르면 man apt-get:

"현재 설치된 모든 패키지의 최신 버전을 설치하는 데 사용됩니다"를 업그레이드합니다.

dist-upgrade “업그레이드 기능을 수행하는 것 외에도 새 버전 패키지의 종속성 변경을 지능적으로 처리할 수 있습니다.”

dist-upgrade에 대한 여러 정의를 인터넷에서 검색한 결과 (아직 설치되지 않은) 새로운 종속성을 설치해야 할 때 사용된다는 것을 알았습니다. 하지만 man apt-get제가 이해하는 한 정의에서는 그렇지 않습니다.

나는 항상 매뉴얼 페이지가 매우 정확하다는 것을 알았지만 dist-upgrade 정의에서 "패키지의 새 버전으로 종속성 변경"이 정확히 무엇을 의미하는지 이해하지 못합니다. 이는 동일한 종속성의 새 버전에서 종속성이 변경되었음을 의미합니까? "변경"은 하나의 종속성을 제거하고 다른 종속성을 설치하는 것을 의미합니까, 아니면 지금 교체된 버전 대신 동일한 종속성의 새 버전을 설치하고 사용하는 것을 의미합니까? 업그레이드가 이미 새 버전의 종속성을 설치하고 패키지가 이 새 종속성을 사용해야 함을 "어떻게든 알려"줍니까?

패키지 A가 dist-upgrade가 실행될 때까지 파일에 의존한다고 가정합니까?

답변1

php업그레이드하기 전에 및 python패키지가 모두 libxml-dev-1.2에 의존하는 상황이 발생했다고 가정합니다.

                            +--------------------+
                            | python_3.1         |
+--------------+            |                    |
| php7.0       |            | depends on libxml-dev_1.2
|              |            +-----+--------------+
| depends on libxml-dev_1.2       |
|              |                  v
+------------+-+
             |              +---------------------+
             |              | libxml-dev-1.2      |
             +------------> |                     |
                            |                     |
                            |                     |
                            +---------------------+

apt그런 다음 로컬 인덱스를 업데이트하면 apt-get update이제 PHP 버전에 사용할 수 있는 새 패키지 버전이
표시됩니다 . 그러나 실행하면 새 php 패키지에 libxml-dev 종속성의 업데이트된 버전이 필요하다는 것이 표시되며, 새 php 패키지는 다음과 같이 말해야 합니다. 일반적으로 apt 는 PHP 7.3 설치 또는 업그레이드를 충족하는 데 필요한 모든 종속성을 설치하지만 apt를 교체하는 경우 새로운 버전 ( 병렬 실행은 실제로 옵션이 아님을 기억)은 종속성 요구 사항을 충족하기 위해 Python 종속성 요구 사항을 "중단"합니다. 이 경우에는 아무 작업도 수행되지 않지만 항목을 보면apt-cache policy7.3
apt-cache show phplibxml-dev-1.3
libxml-dev-1.2libxml-dev-1.3libxml-dev-1.2libxml-dev-1.3php7.3
apt-get upgrademan apt-getdist-upgrade

dist-upgrade
업그레이드 기능을 수행하는 것 외에도 dist-upgrade는 새 버전의 패키지에 대한 종속성 변경을 지능적으로 처리할 수도 있습니다. apt-get에는 필요한 경우 가장 중요한 소프트웨어를 업그레이드하려고 시도하는 "스마트" 충돌 해결 시스템이 있습니다. 덜 중요한 패키지의 비용. 따라서 dist-upgrade 명령은 일부 패키지를 제거할 수 있습니다. [...]

따라서 apt-get dist-upgrade패키지를 업그레이드하기 위해 패키지 지정 종속성과 관련된 규칙을 구부리거나 깨뜨리려는 압력이 있을 것입니다.

따라서 이 두 명령은 apt-get dist-upgrade다른 명령을 사용하는 것보다 더 많은 패키지를 업그레이드합니다.apt-get upgrade

답변2

종속성이 파일인지 아니면 패키지인지에 따라 두 가지 시나리오가 모두 발생할 수 있습니다. 이와 관련하여 새로 설치된 종속성으로 인해 고아 패키지가 있는지 여부를 표시할 수 있는 deborphan 명령이 있습니다.

나는 보통 항상 dist-upgrade를 사용하고 때로는 apt-get remove $(deborphan)정리를 위해 a를 실행합니다.

관련 정보