Debian Package Manager で必要な状態はどのように決定されますか?

Debian Package Manager で必要な状態はどのように決定されますか?

たとえば、次のコマンドを実行すると、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

関連情報