web-dev-qa-db-ja.com

「メタパッケージ」を削除しても、インストールした依存関係が削除されないのはなぜですか?

メタパッケージをアンインストールしようとした場合、aptは実際にはメタパッケージの依存関係を削除せず、「ラッパー」自体のみを削除します。実行中もapt autoremove、これらのサブパッケージはリストされていません。 autoremoveはほとんどの通常のパッケージの依存関係を削除しますが、多くのメタパッケージは削除しないので混乱します。どうしてこれなの?

4
tech4him

メタパッケージはどんな点でも魔法ではありません:「メタパッケージの」という概念はAPTシステムの一部ではありません-メタパッケージは単に実際のコンテンツを持たないパッケージです、依存関係のみです。したがって、それらを削除すると、他の要素にも依存する実際のコンテンツを含むパッケージを削除するのと同じ効果があります。たとえば、WebサーバーアプリケーションモジュールにはWebサーバーが必要ですが、削除すると、Webサーバーはそのまま残ります。インストールされています。

つまり、APTは、別のパッケージが要求したために自動的にインストールされたパッケージを追跡します(「実際の」パッケージを要求するメタパッケージ、またはWebサーバーを必要とするWebサーバーアプリケーションモジュールなど) 、必要なパッケージを削除したら、APTはapt autoremoveを実行して、自動的にインストールされたパッケージを削除することをお勧めします。

Ubuntuのオペレーティングシステムで使用される「メタパッケージ」の主な問題は、それらが多くのパッケージに依存していることであり、基本的に、単一のインストールで膨大な数のソフトウェアをインストールします。非常に多くのパッケージ、特に非常に密接に結びついているパッケージをインストールする場合、相互依存関係の多くを取得できます。メタパッケージには、パッケージABおよびCが必要ですあなたにとって、しかしABに依存し、B(おそらく驚くべきことに)もAに依存します。したがって、メタパッケージを削除すると、Cのみが削除されます。

具体的な例として、LXDEメタパッケージlubuntu-desktopについて考えてみましょう。

次の回答には詳細があります。

3
Guss

Ubuntuのubiquityインストーラーによってインストールされたすべてのパッケージには、「自動」ではなく「手動」というマークが付けられます)、これらのすべてのパッケージを自動削除の対象から外します。

もちろん、それらを削除することはできますが、autoremoveすることはできません。

Ubuntu Server、Minimal Image、Cloud Imageのインストーラーはユビキタスベースではなく、それらのパッケージは自動削除の対象です

apt-markingに慣れていない場合は、aptが依存関係を追跡する方法です管理者によって指定された( 'Manual')、および依存関係として取り込まれた( 'Auto')。見る man apt-mark詳細については。

非標準のユビキティ動作の理由はあなたを保護することです:人々は、あらゆる種類の方法でデスクトップシステムを変更します。メタパッケージ。ほとんどのユーザーは通常、デスクトップ全体を削除するつもりはありません。予期しない削除はかなり重大な感情的なイベントになる可能性があるため、Ubuntu開発者はユーザーを自分の(意図しない)愚かさから保護するための変更を加えました。結局のところ、Ubuntuは初心者や未熟練ユーザーも対象としています。

実際に使用しているものだけにパッケージをプルーニングしたい人(私たちは皆、いつかそれを試しました)は、 Minimal Image から始めて、 apt-markingを削減します。

1
user535733