TL; DRまたは「パイを焦がすだけ」
sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge
(apt-get autoremove --purge
孤児がなくなるまで繰り返します)
さらなる説明
パッケージfoo が別のパッケージlibfooに依存している場合、libfooパッケージを削除すると、依存関係(foo)も削除されます。fooが持っているので依存指定する行を調べてlibfooを、今libfooが削除された場合のfooを残すように壊れてしまいます。逆は真ではありません:削除fooはしません削除を調べてlibfooを自動的に。別のパッケージxfooができる、また、それがインストールされた場合やすい追跡するが(それを削除しないようにやすく、調べてlibfoo依存のみインストールの副作用としてFOO 他の人がまだ依存していない限り、あなたがそれを求めた場合、それを自動削除することを提案します)
メタパッケージが依存していることと同じ方法で、他のパッケージのセットにfooが依存を調べてlibfooので、あなたがメタパッケージを削除するとき、少し他は一般的に削除されます。たとえば、xtermに依存する 2つのメタパッケージ(lxsessionとxfsession)が存在する可能性がありますが、xtermはlxsessionまたはxfsessionなしでは壊れないため、一方または両方をアンインストールしてもxterm はアンインストールされません。メタパッケージは通常、最下部ではなく依存ツリーの最上部にあり、メタパッケージに直接依存する傾向のあるものはほとんどありません。メタパッケージは、主に適切なパッケージセットを一度にインストールする便利な方法を提供しますが、アンインストールツールではありません。
したがって、X11に依存するすべてを焦がしたい場合は、すべてのx11アプリが最終的に依存しなければならない libx11ライブラリの基本セットをターゲットにする必要があります。
sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge
これにより、最終的にlibx11-。*に依存するすべてが削除(シミュレート)され、X11自体に直接依存していない場合でも、X11プログラムの依存関係としてインストールされたパッケージも削除されます(通常、CUPSおよびGhostscriptがインストールされますデスクトップ環境のインストールの副作用として)。2番目のコマンドは、孤立するものがなくなるまで後続の孤立を削除します。後でこの手順を実行する場合、またはまったく実行しない場合は「--auto-remove」を削除するか、GUIのクリーンアップ後にパッケージを手動で追加し直してください。
--dry-runオプションを削除して、削除する予定のないパッケージが削除されないことを確認した後、実際に操作を実行します。
副作用をきれいにしてパージし、必要に応じて追加し直すことを好みます。また、私は先に進んで自分のpiでこれをテストし、非常に質素だが機能的なサーバーで再起動しました。:)
削除が何かをインストールするのはなぜですか?
上記の戦略は上記の問題を解決しますが、なぜ削除操作がパッケージのインストールをもたらすのかという好奇心がまだあります。
すべてのパッケージマネージャーの中心には、ある種の充足可能性ソルバーがあります。パッケージマネージャーにパッケージのインストール、パッケージの削除、またはパッケージのアップグレードを指示する場合、実際に求めているのは、使用可能なパッケージのセットが与えられた場合にソフトウェアインストールの次の望ましい状態を解決することです。このソリューションには、追加のパッケージのインストール(依存関係)、既存のパッケージの削除(競合、破損)、特定のパッケージのダウングレード/アップグレード(互換性レベル)、またはそれらの組み合わせが含まれます。そのため、ソルバーが、他のパッケージを削除するためにいくつかのパッケージをインストールする必要があると判断するのは少し直感的ではありませんが、それは完全に理にかなっています。これは、パッケージマネージャーが解決する厄介な依存関係管理の問題です。
具体例:Javaアプリケーションのセットがすでにインストールされている場合、それらはすべて、現在openjdk-7-jreであるjava互換ランタイムに依存しています。その後、宣言し、新たなJavaツールのインストールのために解決するために、パッケージマネージャを尋ねる紛争とOpenJDKの-7-JREをしかし働くとオラクル-7-JRE(両方のパッケージは、包括的に提供するJava-7-ランタイム)。ソルバーは、提案させていただきます除去のOpenJDKの-7-JREをして、インストールの神託-javaの-7-JRE既存のパッケージを壊さずに、新しいパッケージをインストールするという望ましい状態の解決策として。
この特定のケースでは、xtermはx-terminal-emulator(xterm、lxterminal、およびatermすべてがx-terminal-emulatorを提供する)と呼ばれる仮想依存関係を提供するパッケージであるため、lxterminalを削除する際に(の一部として) LXDE)を除去し、ソルバは、既存のインストールパッケージ(見出さトランス必須可能な例としての)いくつかの種類のX端末エミュレータを必要とする(ので、ソルバーはxtermのをインストールすることを選択しlibutempter0とxbitmapsを、インストールする他のパッケージの説明)、それ以外の場合は壊れている依存関係を満たします。パッケージデータベースを見ずに、これが最も可能性の高いシナリオであると仮定します。
現在xterm(または代替)に依存しているパッケージを検出するには、apt-cache rdependsコマンドを使用します(インストール済みパッケージのみに制限する--installedスイッチを使用):
$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
|xorg
clusterssh
|xinit
|tk8.5
|tk8.4
|transcode
代替文字「|」で始まる依存関係 パッケージがxtermまたはそれが提供する何かに依存していることを意味します(この場合、何かはx-terminal-emulatorです)。clustersshのパッケージが依存するのxterm を明示的、及び代替することができません。これは、xtermを必要とするパッケージの短いリストです。
デボルファンはどうですか?
追跡孤児の機能がに編入された2010年の「自動的削除」機能(Debianのバグを経由してapt-getを582791 deborphanレンダリング)ほとんど冗長と基本的に廃止されました。deborphanやそのような他のソリューションとは異なり、apt-get は明示的にインストールされたパッケージと、明示的にインストールされたパッケージの副作用または依存関係としてインストールされたパッケージを直接追跡します。たとえば、管理者がfooをインストールした場合、libfoo は副作用としてインストールされ、apt-get autoremove は実際、fooの削除時にautoremove(または--auto-remove)が指定されている場合はlibfooを削除します。
デボルファンがとるアプローチは、推測の集まりです。場合:たとえば、推測に依存していないインストールライブラリは孤児でなければならないことを調べてlibfooがインストールされていますが、どちらもFOOもxfooが deborphanが、それは孤児でなければならないことを決定することができる、です。ここでの失敗モードの1つは、ライブラリが提供するツール(libxml2-utilsに再パッケージ化される前のxmllintのlibxml2)専用にライブラリがインストールされたり、単に開発目的で使用できることです。そのようなパッケージは孤児ではありません。さらに、deborphanは図書館に焦点を当て、それは多くのミス非ライブラリ孤児のaptトラック(廃止パッケージ対孤立したパッケージを)。
munin
何らかの理由で削除されましたが、後で簡単に元に戻すことができました。