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