에 따르면 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 policy
7.3
apt-cache show php
libxml-dev-1.3
libxml-dev-1.2
libxml-dev-1.3
libxml-dev-1.2
libxml-dev-1.3
php7.3
apt-get upgrade
man apt-get
dist-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를 실행합니다.