데비안 패키지 관리자에서 원하는 상태는 어떻게 결정되나요?

데비안 패키지 관리자에서 원하는 상태는 어떻게 결정되나요?

예를 들어, 다음 명령을 실행하면 dpkg -l ‘*compiz*’출력은 다음과 같습니다.

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
pi  compiz         1:0.9.12.2+1 all          OpenGL window and compositing man
ii  compiz-core    1:0.9.12.2+1 amd64        OpenGL window and compositing man
un  compiz-core-ab <none>       <none>       (no description available)
[more output deleted]

출력이 조금 신비롭습니다. StackExchange에 대한 자세한 설명은 여러 가지가 있습니다.,하나입니다. 마찬가지로, 비슷한 설명을 제공 man dpkg합니다 man dpkg-query.

위 출력 예에서 첫 번째 필드의 첫 번째 문자 "p"는 원하는 패키지 상태를 나타냅니다. 이는 포장 시스템에서 패키지가 있어야 한다고 생각하는 상태입니다.

이상적인 상태의 기본 의미는 무엇입니까? 즉, 포장 관리 시스템이 포장이 어떤 상태에 있어야 하는지 아는 이유는 무엇입니까? 패키지가 제거된 상위 패키지의 종속성으로만 사용된 경우 지능형 시스템이 해당 패키지를 제거하도록 권장(또는 원함)한다는 것을 알 수 있었습니다. 그러나 우리의 예에서는 그렇지 않습니다.

이 예에서는 "compiz" 패키지가 설치되었지만 dpkg이를 삭제해야 한다고 생각하거나 적어도 삭제하고 싶어합니다. 이유는 무엇입니까? 또한 이 특정 분야는 일반적으로 어떻게 작동합니까? 즉, 시스템은 패키지의 "원하는 상태"를 어떻게 결정하며 이 기능의 근본 원인은 무엇입니까?

답변1

p패키징 시스템이 원하는 상태가 되어야 한다고 "생각"하는 것이 아닙니다 .

이는 귀하 또는 다른 사람이 그렇게 해야 한다고 말하는 것입니다. 예를 들어 aptitude또는 와 같은 프로그램을 사용하거나 synaptic심지어 apt-mark.

apt-get dselect-upgrade다음 실행 또는 유사한 작업 apt-get dist-upgrade시 지워지도록 표시됩니다 .aptitude full-upgrade

apt는 종속성을 해결하는 데 매우 능숙하지만 "지능적"이 아니며 그러한 결정을 내리지 않습니다. 그것은 당신이 지시한 것을 수행하기 위해 최선을 다할 것입니다. 일반적으로 이것이 작동하는 것입니다. 충돌이 자동으로 해결되지 않아 종료되는 경우도 있고, 실행하면 제거하고 싶지 않은 수백 개의 패키지를 제거하는 기능이 제공되므로 "아니요"라고 대답해야 하는 경우도 있습니다. 이 경우에는 문제를 직접 해결해야 합니다(예: aptitude.

compiz패키지의 원하는 상태를 변경하려면 다음과 같은 명령을 실행할 수 있습니다.

apt-mark install compiz

노트: 패키지의 경우와 마찬가지로 이는 다른 패키지의 종속성 및 충돌과 상호 작용합니다. 예를 들어, 과거에 다른 패키지를 설치용으로 표시했기 p때문에 해당 상태가 발생하고 해당 패키지가 compiz와 충돌하는 경우 해당 패키지를 실행할 때 해결해야 하는 종속성 충돌이 있는 것입니다 .aptitudeapt-get dist-upgrade

관련 정보