예를 들어, 다음 명령을 실행하면 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와 충돌하는 경우 해당 패키지를 실행할 때 해결해야 하는 종속성 충돌이 있는 것입니다 .aptitude
apt-get dist-upgrade